matryoshka 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Manifest CHANGED
@@ -15,4 +15,5 @@ templates/image.jpg
15
15
  templates/index.html
16
16
  templates/proxy/index.html
17
17
  templates/test/about.html
18
+ templates/test/header.html
18
19
  templates/test/index.html
data/Rakefile CHANGED
@@ -3,9 +3,10 @@ require 'rubygems'
3
3
  require 'rake'
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('matryoshka', '0.0.1') do |p|
7
- p.description = "Rack middleware for parsing html templates."
8
- p.url = "http://samsm.com/"
6
+ Echoe.new('matryoshka', '0.0.2') do |p|
7
+ p.summary = "Rack middleware for parsing html templates."
8
+ p.description = "Matryoshka is a system for parsing html templates. It merges files based on their position in directories."
9
+ p.url = "http://matryoshka.samsm.com/"
9
10
  p.author = "Sam Schenkman-Moore"
10
11
  p.email = "samsm@samsm.com"
11
12
  p.ignore_pattern = ["tmp/*", "script/*"]
data/config.ru CHANGED
@@ -2,6 +2,7 @@
2
2
  require 'rubygems'
3
3
  require 'rack'
4
4
  require 'lib/matryoshka'
5
+ require 'ruby-debug'
5
6
 
6
7
  use Rack::ShowExceptions
7
8
  run Matryoshka.new
@@ -7,6 +7,8 @@ class Matryoshka::Document::Html::Merge
7
7
  {:id=>:replace},
8
8
  {:before_id=>:before},
9
9
  {:after_id=>:append},
10
+ {:single_tag => :replace},
11
+ {:header_tag => :end_of_tag},
10
12
  {:default=>:end_of_tag}
11
13
  ]
12
14
 
@@ -38,7 +40,6 @@ class Matryoshka::Document::Html::Merge
38
40
  methodologies.each do |methodology|
39
41
  methodology.each_pair do |find_method, merge_technique|
40
42
  # puts "#{@@round} - Doing #{find_method}:#{merge_technique} on #{additional.to_html[0..50].gsub(/\n/,'')}"
41
- # debugger if @@round < 2
42
43
  if (mergeable? and corresponding_match(find_method))
43
44
  send merge_technique
44
45
  return original
@@ -86,12 +87,6 @@ class Matryoshka::Document::Html::Merge
86
87
  self.class.new(corresponding,elem,methodologies).run
87
88
  end
88
89
  end
89
-
90
- rescue
91
- puts '*' * 75
92
- puts "#{@@round} - Rescuing: #{additional.class} cannot be children'd"
93
- puts "#{@@round} - #{additional}"
94
- # debugger
95
90
  end
96
91
 
97
92
  def remerge_original_children
@@ -170,11 +165,7 @@ class Matryoshka::Document::Html::Merge
170
165
  end
171
166
 
172
167
  def nochildren
173
- # Fails on Hpricot::Docs
174
- #
175
- # if original.class == Hpricot::Doc
176
- # return false
177
- # end
168
+ return original.at('*') unless original.children
178
169
  original.children.each do |child|
179
170
  if child.class == Hpricot::Elem
180
171
  return false
@@ -193,6 +184,15 @@ class Matryoshka::Document::Html::Merge
193
184
  original
194
185
  end
195
186
 
187
+ def header_tag
188
+ ['link', 'meta','script'].include?(additional.name) and original.at('head')
189
+ end
190
+
191
+ # For when there can be only one of a tag
192
+ def single_tag
193
+ ['title','head','body'].include?(additional.name) and original.at(additional.name)
194
+ end
195
+
196
196
  def mergeable?
197
197
  acceptable_classes_for_merging = [Hpricot::Elem, Hpricot::Doc]
198
198
  acceptable_classes_for_merging.include? additional.class
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{matryoshka}
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Sam Schenkman-Moore"]
9
- s.date = %q{2009-11-04}
10
- s.description = %q{Rack middleware for parsing html templates.}
9
+ s.date = %q{2009-11-05}
10
+ s.description = %q{Matryoshka is a system for parsing html templates. It merges files based on their position in directories.}
11
11
  s.email = %q{samsm@samsm.com}
12
12
  s.extra_rdoc_files = ["lib/matryoshka.rb", "lib/matryoshka/answer.rb", "lib/matryoshka/data.rb", "lib/matryoshka/document.rb", "lib/matryoshka/document/delegate.rb", "lib/matryoshka/document/html.rb", "lib/matryoshka/document/html/merge.rb", "lib/matryoshka/document/unknown.rb", "lib/matryoshka/external.rb"]
13
- s.files = ["Manifest", "Rakefile", "config.ru", "lib/matryoshka.rb", "lib/matryoshka/answer.rb", "lib/matryoshka/data.rb", "lib/matryoshka/document.rb", "lib/matryoshka/document/delegate.rb", "lib/matryoshka/document/html.rb", "lib/matryoshka/document/html/merge.rb", "lib/matryoshka/document/unknown.rb", "lib/matryoshka/external.rb", "public/README", "templates/image.jpg", "templates/index.html", "templates/proxy/index.html", "templates/test/about.html", "templates/test/index.html", "matryoshka.gemspec"]
14
- s.homepage = %q{http://samsm.com/}
13
+ s.files = ["Manifest", "Rakefile", "config.ru", "lib/matryoshka.rb", "lib/matryoshka/answer.rb", "lib/matryoshka/data.rb", "lib/matryoshka/document.rb", "lib/matryoshka/document/delegate.rb", "lib/matryoshka/document/html.rb", "lib/matryoshka/document/html/merge.rb", "lib/matryoshka/document/unknown.rb", "lib/matryoshka/external.rb", "public/README", "templates/image.jpg", "templates/index.html", "templates/proxy/index.html", "templates/test/about.html", "templates/test/header.html", "templates/test/index.html", "matryoshka.gemspec"]
14
+ s.homepage = %q{http://matryoshka.samsm.com/}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Matryoshka"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{matryoshka}
@@ -0,0 +1,5 @@
1
+ <div id="content">
2
+ <p>This tests the header replacement rules.</p>
3
+ <p>One should be able to replace the title and add stylesheets/javascript</p>
4
+ </div>
5
+ <title>New title</title>
@@ -3,6 +3,5 @@
3
3
  </div>>
4
4
 
5
5
  <div rel="external" href="http://samsm.com/">
6
- <div id="test"></div>
7
- <ul rel="selector" href="ul"></ul>
6
+ <dl rel="selector" href="dl"></dl>
8
7
  </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matryoshka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Schenkman-Moore
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-04 00:00:00 -05:00
12
+ date: 2009-11-05 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,7 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
- description: Rack middleware for parsing html templates.
25
+ description: Matryoshka is a system for parsing html templates. It merges files based on their position in directories.
26
26
  email: samsm@samsm.com
27
27
  executables: []
28
28
 
@@ -56,10 +56,11 @@ files:
56
56
  - templates/index.html
57
57
  - templates/proxy/index.html
58
58
  - templates/test/about.html
59
+ - templates/test/header.html
59
60
  - templates/test/index.html
60
61
  - matryoshka.gemspec
61
62
  has_rdoc: true
62
- homepage: http://samsm.com/
63
+ homepage: http://matryoshka.samsm.com/
63
64
  licenses: []
64
65
 
65
66
  post_install_message: