[ 
https://issues.apache.org/jira/browse/WHIMSY-81?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15957062#comment-15957062
 ] 

Sam Ruby commented on WHIMSY-81:
--------------------------------

Ruby (like JavaScript, but unlike Java and Python) has a concept of open 
classes.  So if you have an existing class and you want to modify it (for 
example, by adding a method), you just do it.  For example:

```
require 'wunderbar'

class Wunderbar::HtmlMarkup
  def _asf_head style, title
    case style
    when :fullsize
      _h1 title
    else
      _h3 title
    end
  end
end

_html do
  _asf_head :minisize, 'Hello World!'
end
```

Note that that code doesn't have to be in the wunderbar source repository, it 
can be in your code, or in the whimsy/asf library.

A good place to add that would be adding a new file here: 
https://github.com/apache/whimsy/tree/master/lib/whimsy/asf, perhaps with a 
name like htmltags or somesuch.  That new file would need to be required to be 
used.  If you want this to be opt-in, any code that would want to use it would 
need to add:

```
require 'whimsy/asf/htmltags'
```

If you want it to be available by default, add a require_relative line to 
https://github.com/apache/whimsy/blob/master/lib/whimsy/asf.rb

Note: if you want to run from the lastest copy of the library that you have on 
your machine, you will need one of those rather ugly lines that look like:

$LOAD_PATH.unshift File.realpath(File.expand_path('../../../lib', __FILE__))








> Configurable overrides for _head(fullsize|mini, title) and similar look & 
> feel outputs
> --------------------------------------------------------------------------------------
>
>                 Key: WHIMSY-81
>                 URL: https://issues.apache.org/jira/browse/WHIMSY-81
>             Project: Whimsy
>          Issue Type: Wish
>          Components: Core
>            Reporter: Shane Curcuru
>            Assignee: Sam Ruby
>
> Whimsy is turning into a larger collection of useful tools, both for 
> organizational processes as well as informational sites used by a wide 
> variety of people.
> It would be very helpful for users to provide a small bit of consistency in 
> look and feel, headers, footers, and the like without unduly changing the 
> general concept of "each tool is independent".
> My first thought would be to either:
> - Override a couple of the Wunderbar methods, perhaps with a very simple set 
> of options, that would output one of a small set of default header blocks & 
> CSS (think the logo, plus a small hamburger menu pointing at a.o, w.a.o, and 
> a Help page)
> - Create new helper functions in ASF that can be easily used in any existing 
> scripts with a similar _syntax.  
> _h1First.maxheader 'title' 
> would output a header div that could be styled with the logo, default 
> hamburger menu, and the title in a consistent way.  .minheader would instead 
> output just the logo and title, nothing else.
> Similar for:
> - Footer (we should have a license, pointer to /about, or /help or "how to 
> submit questions" links)
> - Standardize on a couple of table styles
> We don't need a full website framework, but a few bits of commonality would 
> improve the user experience as well as simplify the learning path for new 
> Whimsy contributors.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to