Widget-like API for DOM objects?

Hi all,

Is there something out there that would let me create DOM objects in a
more
Rubyesque manner? For example, say I want to create a ‘select’ object
in a web
page. I’d like an API something along these lines:

select = Select.new
select.options = [“joe”, “bob”, “moe”] # or {1=>“joe”, 2=>“bob”,
3=>“moe”}
select.selected_index = 2
select.title = “Three guys”
select.access_key = “A”

p select.html # Show html that would be generated using above options

You get the picture. Is there anything like this out on the RAA?
Nothing
immediately jumped out at me.

Regards,

Dan

Dan

I can give you this: http://scm.ywesee.com/?p=htmlgrid

However, this was one of my very first ruby-projects and basically needs
a complete rewrite… Some of the reasons:

  • Geared towards Table-Layout, hence the ‘grid’
  • tight coupling to http://scm.ywesee.com/?p=sbsm which is a
    state-based session-manager
  • meta-programming by configuration-constants
  • naming conventions changed in mid-project
  • nonexistant documentation

That said, if you want to try it out and help me get the priorities for
a next version straight, you’re more than welcome to do so and I hereby
pledge my support - which you’ll probably need :wink:

Cheers
Hannes

Hannes W. wrote:

List-Unsubscribe: mailto:[email protected]?body=unsubscribe

  • meta-programming by configuration-constants
  • naming conventions changed in mid-project
  • nonexistant documentation

That said, if you want to try it out and help me get the priorities for
a next version straight, you’re more than welcome to do so and I hereby
pledge my support - which you’ll probably need :wink:

I tried to look at the link you provided but I get a 403 forbidden. :frowning:

Dan

On 1/13/06, Daniel B. [email protected] wrote:

I tried to look at the link you provided but I get a 403 forbidden. :frowning:

sorry 'bout that, must have been a copy-paste thingummy… Try again:
http://scm.ywesee.com/?p=htmlgrid

Hannes

On 1/13/06, Hannes W. [email protected] wrote:

On 1/13/06, Daniel B. [email protected] wrote:

I tried to look at the link you provided but I get a 403 forbidden. :frowning:

I must learn to think before posting… I’ve made a tarball, just in
case you don’t want to install git to download the code:
http://download.ywesee.com/htmlgrid/htmlgrid-daily.tar.bz2
http://download.ywesee.com/sbsm/sbsm-daily.tar.bz2

Apologies for all the noise…
Hannes

select.access_key = “A”

p select.html # Show html that would be generated using above options

You get the picture. Is there anything like this out on the RAA? Nothing
immediately jumped out at me.

REXML has a DOM-like API, and it comes pre-installed with Ruby:

load REXML

require ‘rexml/document’

Create an HTML select element.

class HTMLSelect
attr_accessor :options, :attrs, :index

def initialize(options = [], select_attrs = {}, selected_index = 

nil)
@options, @attrs, @index = options, select_attrs, selected_index
end

def to_s
  # create return select element and append requested attributes
  ret = REXML::Element.new('select')
  @attrs.each { |key, val| ret.attributes[key] = val }

  # iterate over, create, and append each option
  @options.each_with_index do |opt, i|
    # create and append element
    opt_elem = ret << REXML::Element.new('option')

    # add option text, and option attributes
    opt_elem << REXML::Text.new(opt)
    opt_elem.attributes['value'] = i.to_s
    opt_elem.attributes['selected'] = 'Y' if i == @index
  end

  # convert select element to string and return
  ret.to_s
end

end

define attributes, option items, and initial selected index

select_attrs = {
‘name’ => ‘which_guy’,
‘title’ => ‘Three Guys’,
‘access_key’ => ‘A’,
}
selected_index, options = 2, %w{joe bob moe}

build select box and print out result

puts HTMLSelect.new(options, select_attrs, selected_index).to_s

Hope this helps…

Paul D. wrote:

select.selected_index = 2

  @options, @attrs, @index = options, select_attrs, selected_index
    opt_elem = ret << REXML::Element.new('option')

end
puts HTMLSelect.new(options, select_attrs, selected_index).to_s

Hope this helps…

Ah, thanks Paul. I’d like something prebuilt, but it looks like REXML
would
serve as a great way to build things behind the scenes.

Regards,

Dan