dolores-cml 0.5.6 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.6
1
+ 0.6.1
data/cml.gemspec CHANGED
@@ -1,12 +1,15 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{cml}
5
- s.version = "0.5.6"
8
+ s.version = "0.6.1"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["Chris Van Pelt"]
9
- s.date = %q{2009-09-08}
12
+ s.date = %q{2009-09-16}
10
13
  s.description = %q{CML let's you easily create form elements and custom interfaces for the CrowdFlower Croud Labor platform}
11
14
  s.email = %q{vanpelt@doloreslabs.com}
12
15
  s.extra_rdoc_files = [
@@ -44,6 +47,7 @@ Gem::Specification.new do |s|
44
47
  "spec/fixtures/complex.cml",
45
48
  "spec/fixtures/html.cml",
46
49
  "spec/fixtures/invalid.cml",
50
+ "spec/fixtures/script-style.cml",
47
51
  "spec/fixtures/segfault.cml",
48
52
  "spec/meta_spec.rb",
49
53
  "spec/normalize_spec.rb",
@@ -64,7 +68,7 @@ Gem::Specification.new do |s|
64
68
  s.homepage = %q{http://github.com/dolores/cml}
65
69
  s.rdoc_options = ["--charset=UTF-8"]
66
70
  s.require_paths = ["lib"]
67
- s.rubygems_version = %q{1.3.4}
71
+ s.rubygems_version = %q{1.3.5}
68
72
  s.summary = %q{CML is CrowdFlower Markup Language}
69
73
  s.test_files = [
70
74
  "spec/complex_spec.rb",
data/lib/cml/parser.rb CHANGED
@@ -5,7 +5,7 @@ module CML
5
5
  def initialize(content, opts = {})
6
6
  @opts = opts
7
7
  #Because nokogiri is munging my CDATA sections, we parse it out ahead of time
8
- @cdata = content.scan(/(<(script|style)[^>]*?>)(.+?)(<\/\2)/m)
8
+ @cdata = content.scan(/(<(script|style)[^>]*?>)(.*?)(<\/\2)/m)
9
9
  @doc = Parser.parse(content)
10
10
  @cftags = @doc.xpath("//cml:*[not(ancestor::cml:*)]")
11
11
  normalize if opts[:normalize]
@@ -17,7 +17,7 @@ module CML
17
17
  def self.parse(content)
18
18
  #This sucks, we remove scripts, styles, and close non self closed tags
19
19
  #We could potentially add CDATA clauses to them, but this is "easier"
20
- xhtml = content.gsub(/(<(script|style)[^>]*?>)(.+?)(<\/\2)/m, "\\1\\4").gsub(/(<(input|link|img|br|hr).*?)>/,'\1/>') #base, basefont, area, meta
20
+ xhtml = content.gsub(/(<(script|style)[^>]*?>)(.*?)(<\/\2)/m, "\\1\\4").gsub(/(<(input|link|img|br|hr).*?)\/?>/,'\1/>') #base, basefont, area, meta
21
21
  Nokogiri::XML("<root xmlns:cml=\"http://crowdflower.com\">#{xhtml}</root>")
22
22
  end
23
23
 
@@ -105,11 +105,19 @@ module CML
105
105
  to_html
106
106
  end
107
107
 
108
+ def to_cml
109
+ cml = @doc.to_xhtml.gsub(/<\/?root[^>]*?>|<\/?>/,'').gsub(/(<(input|link|img|br|hr).*?)\/?>/,'\1/>')
110
+ #Hack to ensure the next sub doesn't match...
111
+ @cdata.each { |matches| cml.sub!(/(<(?:script|style)[^>]*>)</m, "\\1#{matches[2].empty? ? " " : matches[2]}<") }
112
+ cml
113
+ end
114
+
108
115
  def to_html(opts = nil)
109
116
  #We convert the entire document and strip root tags / rando empty tags ALA libxml 2.6.32
110
- html = convert(opts).to_xhtml.gsub(/<\/?root[^>]*?>|<\/?>/,'')
117
+ #We're also adding self closing tags
118
+ html = convert(opts).to_xhtml.gsub(/<\/?root[^>]*?>|<\/?>/,'').gsub(/(<(input|link|img|br|hr).*?)\/?>/,'\1/>')
111
119
  #Let's re-insert that CDATA
112
- @cdata.each { |matches| html.sub!(/(<(?:script|style)[^>]*>)</m, "\\1#{matches[2]}<") }
120
+ @cdata.each { |matches| html.sub!(/(<(?:script|style)[^>]*>)</m, "\\1#{matches[2].empty? ? " " : matches[2]}<") }
113
121
  wrap(html)
114
122
  end
115
123
 
data/spec/complex_spec.rb CHANGED
@@ -57,6 +57,22 @@ describe "CML Complex" do
57
57
  @p.to_html
58
58
  end
59
59
 
60
+ it "script / styles" do
61
+ @p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/script-style.cml"), {:prefix => "u12345"})
62
+ @p.to_html.should sorta_match(<<-HTML)
63
+ <div class="cml" id="u12345"><script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.8&amp;appid=Knx84fDV34H2VnhVU1DoD7chT1wjJ2r36uf4dZW7Vc5si9sqQRAYU_g8fo7zV.wF"> </script>
64
+ <script src="/javascripts/upload.js" type="text/javascript" charset="utf-8"> </script>
65
+
66
+ <script type="text/javascript">
67
+ var cool;
68
+ </script>
69
+ <style type="text/css">
70
+ a { font: awesome;}
71
+ </style>
72
+ </div>
73
+ HTML
74
+ end
75
+
60
76
  it "parses scripts and styles" do
61
77
  @p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/html.cml"), {:prefix => "u12345"})
62
78
  @p.to_html.length.should > 900
@@ -0,0 +1,10 @@
1
+ <script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.8&amp;appid=Knx84fDV34H2VnhVU1DoD7chT1wjJ2r36uf4dZW7Vc5si9sqQRAYU_g8fo7zV.wF"></script>
2
+ <script src="/javascripts/upload.js" type="text/javascript" charset="utf-8"></script>
3
+
4
+ <script type="text/javascript">
5
+ var cool;
6
+ </script>
7
+
8
+ <style type="text/css">
9
+ a { font:awesome;}
10
+ </style>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dolores-cml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Van Pelt
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-08 00:00:00 -07:00
12
+ date: 2009-09-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -82,6 +82,7 @@ files:
82
82
  - spec/fixtures/complex.cml
83
83
  - spec/fixtures/html.cml
84
84
  - spec/fixtures/invalid.cml
85
+ - spec/fixtures/script-style.cml
85
86
  - spec/fixtures/segfault.cml
86
87
  - spec/meta_spec.rb
87
88
  - spec/normalize_spec.rb
@@ -100,6 +101,7 @@ files:
100
101
  - spec/validation_spec.rb
101
102
  has_rdoc: false
102
103
  homepage: http://github.com/dolores/cml
104
+ licenses:
103
105
  post_install_message:
104
106
  rdoc_options:
105
107
  - --charset=UTF-8
@@ -120,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
122
  requirements: []
121
123
 
122
124
  rubyforge_project:
123
- rubygems_version: 1.2.0
125
+ rubygems_version: 1.3.5
124
126
  signing_key:
125
127
  specification_version: 3
126
128
  summary: CML is CrowdFlower Markup Language