soywiki 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/Gemfile +1 -0
  2. data/README.markdown +8 -17
  3. data/Rakefile +10 -15
  4. data/lib/page_template.html.haml +4 -1
  5. data/lib/soywiki/html.rb +13 -3
  6. data/lib/soywiki.rb +10 -4
  7. data/soywiki.gemspec +1 -0
  8. metadata +16 -39
  9. data/website/.gitignore +0 -1
  10. data/website/bottom.markdown +0 -0
  11. data/website/gen.rb +0 -19
  12. data/website/images-soywiki/expand.png +0 -0
  13. data/website/images-soywiki/expand.xcf +0 -0
  14. data/website/images-soywiki/page-select.png +0 -0
  15. data/website/images-soywiki/page-select.xcf +0 -0
  16. data/website/images-soywiki/search.png +0 -0
  17. data/website/images-soywiki/search.xcf +0 -0
  18. data/website/images-soywiki/sm-expand.png +0 -0
  19. data/website/images-soywiki/sm-page-select.png +0 -0
  20. data/website/images-soywiki/sm-search.png +0 -0
  21. data/website/lightbox2/css/lightbox.css +0 -27
  22. data/website/lightbox2/images/bullet.gif +0 -0
  23. data/website/lightbox2/images/close.gif +0 -0
  24. data/website/lightbox2/images/closelabel.gif +0 -0
  25. data/website/lightbox2/images/donate-button.gif +0 -0
  26. data/website/lightbox2/images/download-icon.gif +0 -0
  27. data/website/lightbox2/images/image-1.jpg +0 -0
  28. data/website/lightbox2/images/loading.gif +0 -0
  29. data/website/lightbox2/images/nextlabel.gif +0 -0
  30. data/website/lightbox2/images/prevlabel.gif +0 -0
  31. data/website/lightbox2/images/thumb-1.jpg +0 -0
  32. data/website/lightbox2/index.html +0 -63
  33. data/website/lightbox2/js/builder.js +0 -136
  34. data/website/lightbox2/js/effects.js +0 -1122
  35. data/website/lightbox2/js/lightbox.js +0 -498
  36. data/website/lightbox2/js/prototype.js +0 -4221
  37. data/website/lightbox2/js/scriptaculous.js +0 -58
  38. data/website/soywiki-template.html +0 -80
  39. data/website/stylesheets-vmail/960.css +0 -1
  40. data/website/stylesheets-vmail/reset.css +0 -1
  41. data/website/stylesheets-vmail/site.css +0 -67
  42. data/website/stylesheets-vmail/syntax-colors.css +0 -33
  43. data/website/stylesheets-vmail/text.css +0 -1
  44. data/website/top.screenshots +0 -5
data/Gemfile CHANGED
@@ -1,2 +1,3 @@
1
1
  source :rubygems
2
2
  gem "haml"
3
+ gem "rdiscount"
data/README.markdown CHANGED
@@ -4,6 +4,8 @@ SoyWiki turns Vim into a powerful, lean, and fast wiki. It's got all the
4
4
  protein of a more conventional wiki, but less saturated fat and no
5
5
  cholesterol.
6
6
 
7
+ [screenshots]
8
+
7
9
  A quick overview of SoyWiki's characteristics and features:
8
10
 
9
11
  * flat text files
@@ -71,9 +73,6 @@ If you run into any PATH errors, try the following: Install the RVM
71
73
  Version Manager, then install Ruby 1.9.2 through RVM, and then run `gem
72
74
  install soywiki`. This should solve any installation issues.
73
75
 
74
-
75
-
76
-
77
76
  If you ever want to uninstall SoyWiki from your system, execute this command:
78
77
 
79
78
  gem uninstall soywiki
@@ -441,6 +440,7 @@ dreams within dreams.
441
440
  ## Exporting to HTML
442
441
 
443
442
  * `soywiki --html`
443
+ * `soywiki --html --markdown`
444
444
 
445
445
  Want to share your wiki with non-Vim-users? You can export your wiki
446
446
  into a directory of HTML pages. Type `soywiki --html` from the root
@@ -448,22 +448,13 @@ directory of your wiki.
448
448
 
449
449
  Aside from WikiWords, SoyWiki uses no markup system whatsoever. You can
450
450
  write your content in whatever markup system you want, or no markup
451
- system at all. It's all plain text to SoyWiki. The HTML export feature
452
- just wraps your content in <pre> tags after turning your WikiWords
453
- into hyperlinks, so no markup system is really necessary.
454
-
455
- HTML export is no-frills and basic. Hopefully, someday, SoyWiki will be
456
- able to
457
-
458
- * sport an alternative web interface that is as cool as [TiddlyWiki's][tiddly] and [GTDTiddlyWiki's][gtd]
459
- * let you specify a markup system for rendering the HTML version of your content
460
- * come bundled with a Sinatra application that translates wiki pages into web pages upon request
451
+ system at all.
461
452
 
462
- [tiddly]:http://www.tiddlywiki.com/
463
- [gtd]:http://nathanbowers.com/gtdtw/
453
+ By default, the HTML export feature just wraps your content in
454
+ <pre> tags after turning your WikiWords into hyperlinks.
464
455
 
465
- If you want to contribute any of these features, please feel free to implement
466
- them and submit a pull request.
456
+ If instead you want to write your pages using Markdown, you can process
457
+ Markdown by adding the `--markdown` flag.
467
458
 
468
459
 
469
460
  ## Extra macros
data/Rakefile CHANGED
@@ -30,29 +30,24 @@ end
30
30
  desc "build and push website"
31
31
  task :web => :build_webpage do
32
32
  puts "Building and pushing website"
33
- `scp website/soywiki.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
34
- `scp -r website/images-soywiki zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
35
- `open http://danielchoi.com/software/soywiki.html`
36
- end
37
-
38
- desc "build website locally"
39
- task :build_web_locally => :build_webpage do
40
- Dir.chdir("website") do
41
- `open soywiki.html`
33
+ Dir.chdir "../project-webpages" do
34
+ `scp out/soywiki.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
35
+ `rsync -avz out/images-soywiki zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
36
+ `rsync -avz out/stylesheets zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
37
+ `rsync -avz out/lightbox2 zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
42
38
  end
39
+ `open http://danielchoi.com/software/soywiki.html`
43
40
  end
44
41
 
45
42
  desc "build webpage"
46
43
  task :build_webpage do
47
- $LOAD_PATH.unshift 'website'
48
- require 'gen'
49
- Dir.chdir("website") do
50
- html = Webpage.generate(Soywiki::VERSION)
51
- File.open('soywiki.html', 'w') {|f| f.puts html}
44
+ `cp README.markdown ../project-webpages/src/soywiki.README.markdown`
45
+ Dir.chdir "../project-webpages" do
46
+ puts `ruby gen.rb soywiki #{Soywiki::VERSION}`
47
+ #`open out/soywiki.html`
52
48
  end
53
49
  end
54
50
 
55
-
56
51
  desc "Run tests"
57
52
  task :test do
58
53
  $:.unshift File.expand_path("test")
@@ -24,4 +24,7 @@
24
24
  %a{:href => "#{page}.html"}= page
25
25
  .main
26
26
  %h2= title
27
- %pre= body
27
+ - if markdown
28
+ != body.to_html
29
+ - else
30
+ %pre= body
data/lib/soywiki/html.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'haml'
2
+ require 'rdiscount'
2
3
  module Soywiki
3
4
  module Html
4
5
 
@@ -29,11 +30,18 @@ module Soywiki
29
30
 
30
31
  def self.generate_page(text, namespace, pages, namespaces)
31
32
  title = text.split("\n")[0]
32
- body = process(text.split("\n")[1..-1].join("\n").strip)
33
+ body = if @markdown
34
+ RDiscount.new(text.split("\n")[1..-1].join("\n").strip)
35
+ else
36
+ process(text.split("\n")[1..-1].join("\n").strip)
37
+ end
38
+
33
39
  Haml::Engine.new(PAGE_TEMPLATE).render(nil, :body => body,
34
40
  :title => title,
35
41
  :namespace => namespace,
36
- :namespaces => namespaces, :pages => pages)
42
+ :namespaces => namespaces,
43
+ :pages => pages,
44
+ :markdown => @markdown)
37
45
  end
38
46
 
39
47
 
@@ -82,7 +90,9 @@ module Soywiki
82
90
  # puts "=> Writing #{outfile}"
83
91
  end
84
92
 
85
- def self.export
93
+ def self.export(markdown)
94
+ @markdown = markdown
95
+
86
96
  `rm -rf #{HTML_DIR}/*`
87
97
  namespaces = Dir["*"].select {|f|
88
98
  File.directory?(f) && f != HTML_DIR
data/lib/soywiki.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'string_ext'
2
2
 
3
3
  module Soywiki
4
- VERSION = '0.7.0'
4
+ VERSION = '0.7.1'
5
5
  WIKI_WORD = /\b([a-z][\w_]+\.)?[A-Z][a-z]+[A-Z]\w*\b/
6
6
  HYPERLINK = %r|\bhttps?://[^ >)\n\]]+|
7
7
 
@@ -22,7 +22,13 @@ called main/HomePage.
22
22
  END
23
23
  exit
24
24
  elsif ARGV.first == '--html'
25
- self.html_export
25
+ if ARGV[1] == '--markdown'
26
+ puts "Exporting html using markdown"
27
+ self.html_export(true)
28
+ else
29
+ puts "Exporting html"
30
+ self.html_export
31
+ end
26
32
  exit
27
33
  elsif ARGV.first == '--install-plugin'
28
34
  require 'erb'
@@ -39,9 +45,9 @@ END
39
45
  end
40
46
  end
41
47
 
42
- def self.html_export
48
+ def self.html_export(markdown=false)
43
49
  require 'soywiki/html'
44
- Html.export
50
+ Html.export(markdown)
45
51
  end
46
52
  end
47
53
 
data/soywiki.gemspec CHANGED
@@ -20,4 +20,5 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency 'haml'
23
+ s.add_dependency 'rdiscount'
23
24
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 0
9
- version: 0.7.0
8
+ - 1
9
+ version: 0.7.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Daniel Choi
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-21 00:00:00 -05:00
17
+ date: 2011-02-26 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -30,6 +30,19 @@ dependencies:
30
30
  version: "0"
31
31
  type: :runtime
32
32
  version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rdiscount
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
33
46
  description: A personal and collaborative wiki for Vim users
34
47
  email:
35
48
  - dhchoi@gmail.com
@@ -63,42 +76,6 @@ files:
63
76
  - lib/soywiki/html.rb
64
77
  - lib/string_ext.rb
65
78
  - soywiki.gemspec
66
- - website/.gitignore
67
- - website/bottom.markdown
68
- - website/gen.rb
69
- - website/images-soywiki/expand.png
70
- - website/images-soywiki/expand.xcf
71
- - website/images-soywiki/page-select.png
72
- - website/images-soywiki/page-select.xcf
73
- - website/images-soywiki/search.png
74
- - website/images-soywiki/search.xcf
75
- - website/images-soywiki/sm-expand.png
76
- - website/images-soywiki/sm-page-select.png
77
- - website/images-soywiki/sm-search.png
78
- - website/lightbox2/css/lightbox.css
79
- - website/lightbox2/images/bullet.gif
80
- - website/lightbox2/images/close.gif
81
- - website/lightbox2/images/closelabel.gif
82
- - website/lightbox2/images/donate-button.gif
83
- - website/lightbox2/images/download-icon.gif
84
- - website/lightbox2/images/image-1.jpg
85
- - website/lightbox2/images/loading.gif
86
- - website/lightbox2/images/nextlabel.gif
87
- - website/lightbox2/images/prevlabel.gif
88
- - website/lightbox2/images/thumb-1.jpg
89
- - website/lightbox2/index.html
90
- - website/lightbox2/js/builder.js
91
- - website/lightbox2/js/effects.js
92
- - website/lightbox2/js/lightbox.js
93
- - website/lightbox2/js/prototype.js
94
- - website/lightbox2/js/scriptaculous.js
95
- - website/soywiki-template.html
96
- - website/stylesheets-vmail/960.css
97
- - website/stylesheets-vmail/reset.css
98
- - website/stylesheets-vmail/site.css
99
- - website/stylesheets-vmail/syntax-colors.css
100
- - website/stylesheets-vmail/text.css
101
- - website/top.screenshots
102
79
  has_rdoc: true
103
80
  homepage: http://danielchoi.com/software/soywiki.html
104
81
  licenses: []
data/website/.gitignore DELETED
@@ -1 +0,0 @@
1
- images-original/
File without changes
data/website/gen.rb DELETED
@@ -1,19 +0,0 @@
1
- require 'rdiscount'
2
- require 'liquid'
3
-
4
- module Webpage
5
- def self.generate(version)
6
- screenshots = RDiscount.new(File.read("top.screenshots")).to_html
7
- readme = File.expand_path("../../README.markdown", __FILE__)
8
- raise "No README" unless File.size?(readme)
9
- md = File.read(readme).split(/^\s*$/)
10
- insert_before = md.grep(/^A quick overview of/)
11
- insert_at = md.index insert_before.first
12
- md.insert(insert_at, screenshots)
13
- md = md.join("\n\n")
14
- # for some reason markdown inserts extra blank lines
15
- content = RDiscount.new(md).to_html.gsub(/\n\n{3,}/, "\n\n")
16
- template = File.read("soywiki-template.html")
17
- out = Liquid::Template.parse(template).render 'content' => content, 'timestamp' => Time.now.to_i, 'version' => version
18
- end
19
- end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,27 +0,0 @@
1
- #lightbox{ position: absolute; left: 0; width: 100%; z-index: 100; text-align: center; line-height: 0;}
2
- #lightbox img{ width: auto; height: auto;}
3
- #lightbox a img{ border: none; }
4
-
5
- #outerImageContainer{ position: relative; background-color: #fff; width: 250px; height: 250px; margin: 0 auto; }
6
- #imageContainer{ padding: 10px; }
7
-
8
- #loading{ position: absolute; top: 40%; left: 0%; height: 25%; width: 100%; text-align: center; line-height: 0; }
9
- #hoverNav{ position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 10; }
10
- #imageContainer>#hoverNav{ left: 0;}
11
- #hoverNav a{ outline: none;}
12
-
13
- #prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(data:image/gif;base64,AAAA); /* Trick IE into showing hover */ display: block; }
14
- #prevLink { left: 0; float: left;}
15
- #nextLink { right: 0; float: right;}
16
- #prevLink:hover, #prevLink:visited:hover { background: url(../images/prevlabel.gif) left 15% no-repeat; }
17
- #nextLink:hover, #nextLink:visited:hover { background: url(../images/nextlabel.gif) right 15% no-repeat; }
18
-
19
- #imageDataContainer{ font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; margin: 0 auto; line-height: 1.4em; overflow: auto; width: 100% ; }
20
-
21
- #imageData{ padding:0 10px; color: #666; }
22
- #imageData #imageDetails{ width: 70%; float: left; text-align: left; }
23
- #imageData #caption{ font-weight: bold; }
24
- #imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; }
25
- #imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; outline: none;}
26
-
27
- #overlay{ position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,63 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
4
- <head>
5
-
6
- <title>Lightbox JS v2.0 | Test Page</title>
7
-
8
- <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
9
-
10
- <script src="js/prototype.js" type="text/javascript"></script>
11
- <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script>
12
- <script src="js/lightbox.js" type="text/javascript"></script>
13
-
14
- <style type="text/css">
15
- body{ color: #333; font: 13px 'Lucida Grande', Verdana, sans-serif; }
16
- </style>
17
-
18
- </head>
19
- <body>
20
-
21
-
22
- <h1><a href="http://www.lokeshdhakar.com/projects/lightbox2/">Lightbox JS <em>v2.04</em></a></h1>
23
- <p><a href="http://www.lokeshdhakar.com">by Lokesh Dhakar</a></p>
24
-
25
- <h2>Example</h2>
26
-
27
- <a href="images/image-1.jpg" rel="lightbox"><img src="images/thumb-1.jpg" width="100" height="40" alt="" /></a>
28
-
29
-
30
-
31
-
32
- <h2>How to Use:</h2>
33
- <h3>Part 1 - Setup</h3>
34
- <ol>
35
- <li>Lightbox v2.0 uses the Prototype Framework and Scriptaculous Effects Library. You will need to include these three Javascript files in your header.
36
- <pre><code>&lt;script type=&quot;text/javascript&quot; src=&quot;js/prototype.js&quot;&gt;&lt;/script&gt;
37
- &lt;script type=&quot;text/javascript&quot; src=&quot;js/scriptaculous.js?load=effects,builder&quot;&gt;&lt;/script&gt;
38
- &lt;script type=&quot;text/javascript&quot; src=&quot;js/lightbox.js&quot;&gt;&lt;/script&gt;
39
- </code></pre>
40
- </li>
41
- <li>Include the Lightbox CSS file (or append your active stylesheet with the Lightbox styles).
42
- <pre><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;css/lightbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
43
- </code></pre>
44
- </li>
45
- <li>Check the CSS and make sure the referenced <code>prevlabel.gif</code> and <code>nextlabel.gif</code> files are in the right location. Also, make sure the <code>loading.gif</code> and <code>closelabel.gif</code> files as referenced near the top of the <code>lightbox.js</code> file are in the right location.</li>
46
- </ol>
47
- <h3>Part 2 - Activate</h3>
48
- <ol>
49
- <li>Add a <code>rel="lightbox"</code> attribute to any link tag to activate the lightbox. For example:
50
- <pre><code>&lt;a href=&quot;images/image-1.jpg&quot; rel=&quot;lightbox&quot; title=&quot;my caption&quot;&gt;image #1&lt;/a&gt;
51
- </code></pre>
52
- <em>Optional: </em>Use the <code>title</code> attribute if you want to show a caption. </li>
53
- <li>If you have a set of related images that you would like to group, follow step one but additionally include a group name between square brackets in the rel attribute. For example:
54
- <pre><code>&lt;a href=&quot;images/image-1.jpg&quot; rel=&quot;lightbox[roadtrip]&quot;&gt;image #1&lt;/a&gt;
55
- &lt;a href=&quot;images/image-2.jpg&quot; rel=&quot;lightbox[roadtrip]&quot;&gt;image #2&lt;/a&gt;
56
- &lt;a href=&quot;images/image-3.jpg&quot; rel=&quot;lightbox[roadtrip]&quot;&gt;image #3&lt;/a&gt;
57
- </code></pre>
58
- No limits to the number of image sets per page or how many images are allowed in each set. Go nuts!</li>
59
- </ol>
60
-
61
-
62
- </body>
63
- </html>
@@ -1,136 +0,0 @@
1
- // script.aculo.us builder.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
2
-
3
- // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
4
- //
5
- // script.aculo.us is freely distributable under the terms of an MIT-style license.
6
- // For details, see the script.aculo.us web site: http://script.aculo.us/
7
-
8
- var Builder = {
9
- NODEMAP: {
10
- AREA: 'map',
11
- CAPTION: 'table',
12
- COL: 'table',
13
- COLGROUP: 'table',
14
- LEGEND: 'fieldset',
15
- OPTGROUP: 'select',
16
- OPTION: 'select',
17
- PARAM: 'object',
18
- TBODY: 'table',
19
- TD: 'table',
20
- TFOOT: 'table',
21
- TH: 'table',
22
- THEAD: 'table',
23
- TR: 'table'
24
- },
25
- // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
26
- // due to a Firefox bug
27
- node: function(elementName) {
28
- elementName = elementName.toUpperCase();
29
-
30
- // try innerHTML approach
31
- var parentTag = this.NODEMAP[elementName] || 'div';
32
- var parentElement = document.createElement(parentTag);
33
- try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
34
- parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
35
- } catch(e) {}
36
- var element = parentElement.firstChild || null;
37
-
38
- // see if browser added wrapping tags
39
- if(element && (element.tagName.toUpperCase() != elementName))
40
- element = element.getElementsByTagName(elementName)[0];
41
-
42
- // fallback to createElement approach
43
- if(!element) element = document.createElement(elementName);
44
-
45
- // abort if nothing could be created
46
- if(!element) return;
47
-
48
- // attributes (or text)
49
- if(arguments[1])
50
- if(this._isStringOrNumber(arguments[1]) ||
51
- (arguments[1] instanceof Array) ||
52
- arguments[1].tagName) {
53
- this._children(element, arguments[1]);
54
- } else {
55
- var attrs = this._attributes(arguments[1]);
56
- if(attrs.length) {
57
- try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
58
- parentElement.innerHTML = "<" +elementName + " " +
59
- attrs + "></" + elementName + ">";
60
- } catch(e) {}
61
- element = parentElement.firstChild || null;
62
- // workaround firefox 1.0.X bug
63
- if(!element) {
64
- element = document.createElement(elementName);
65
- for(attr in arguments[1])
66
- element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
67
- }
68
- if(element.tagName.toUpperCase() != elementName)
69
- element = parentElement.getElementsByTagName(elementName)[0];
70
- }
71
- }
72
-
73
- // text, or array of children
74
- if(arguments[2])
75
- this._children(element, arguments[2]);
76
-
77
- return element;
78
- },
79
- _text: function(text) {
80
- return document.createTextNode(text);
81
- },
82
-
83
- ATTR_MAP: {
84
- 'className': 'class',
85
- 'htmlFor': 'for'
86
- },
87
-
88
- _attributes: function(attributes) {
89
- var attrs = [];
90
- for(attribute in attributes)
91
- attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
92
- '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
93
- return attrs.join(" ");
94
- },
95
- _children: function(element, children) {
96
- if(children.tagName) {
97
- element.appendChild(children);
98
- return;
99
- }
100
- if(typeof children=='object') { // array can hold nodes and text
101
- children.flatten().each( function(e) {
102
- if(typeof e=='object')
103
- element.appendChild(e)
104
- else
105
- if(Builder._isStringOrNumber(e))
106
- element.appendChild(Builder._text(e));
107
- });
108
- } else
109
- if(Builder._isStringOrNumber(children))
110
- element.appendChild(Builder._text(children));
111
- },
112
- _isStringOrNumber: function(param) {
113
- return(typeof param=='string' || typeof param=='number');
114
- },
115
- build: function(html) {
116
- var element = this.node('div');
117
- $(element).update(html.strip());
118
- return element.down();
119
- },
120
- dump: function(scope) {
121
- if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
122
-
123
- var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
124
- "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
125
- "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
126
- "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
127
- "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
128
- "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
129
-
130
- tags.each( function(tag){
131
- scope[tag] = function() {
132
- return Builder.node.apply(Builder, [tag].concat($A(arguments)));
133
- }
134
- });
135
- }
136
- }