code_terminator 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2595e8dd8727aea875deddcf64d1c8c486258c4a
4
- data.tar.gz: f03762e7f695a92cea3b868a39530e2c4fbf8038
3
+ metadata.gz: 7b9dd80f0480385f782d16f013ea23b3e5da72d0
4
+ data.tar.gz: 82e5bba3270ec1abca8d1d827f0bf14c41f82993
5
5
  SHA512:
6
- metadata.gz: 3c7a9c4faa6283ebb3937dd49550dc432ddc5ab012477832758869affccfcc70c083ed8126a1a10b9efb449e29ad1cf6b9ade5819e70765c3990c8f6a57e01b6
7
- data.tar.gz: f3e967ae7a76b3e77f1995cd87fbb423428252dede406809626620678d92a02d143faa92783980bc0e7b3a6d3b86c700c976cf2f06003b5fed0ee9f368d2ac7e
6
+ metadata.gz: 8d26de5396d0d3fb12c5c1e667fe43633bd893ebccd21103236ed13366714ae456a9052d7c3d0f54f224e9e4b2cb7b4757cdb024681b6d23d56388dc07c30853
7
+ data.tar.gz: d93ddd7ba64c42beb2e3ba276ff2c4c7dcc0e98e61c7174737a6dd3e4cdff4525f3196da5f4d33426fcb819bd393c71a5b1e73e89d2ec6577f7e48cdb56c0f00
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # CodeTerminator
2
2
 
3
- CodeTerminator is a gem that helps to <strike>exterminate Sarah Connor</strike> parse, evaluate and compare html code. Also is useful when you need to check html code syntaxis.
3
+ CodeTerminator is a gem that helps to <strike>exterminate Sarah Connor</strike> parse, evaluate and compare html and css code. Also is useful when you need to check html and css code syntaxis.
4
4
 
5
5
  ##Features
6
6
  <ul>
7
7
  <li>HTML parser </li>
8
- <li>CSS parser (Coming soon)</li>
8
+ <li>CSS parser </li>
9
9
  </ul>
10
10
 
11
11
  ## Installation
@@ -26,17 +26,18 @@ Or install it yourself as:
26
26
 
27
27
  ## Quick Start
28
28
 
29
+ #HTML
29
30
  To parse HTML and match the file with html code you just need to do:
30
31
  ```ruby
31
32
  # code = code get from an editor
32
33
  # source = Source of the file you want to compare with
33
-
34
+
34
35
  # First, validate syntasis of the code
35
36
  ct = CodeTerminator::Html.new
36
37
  errors = ct.validate_syntax(code)
37
38
  result << errors[0]
38
-
39
- # If code do't have errors, match the code with your html file
39
+
40
+ # If code don't have errors, match the code with your html file
40
41
  if errors.empty?
41
42
  result = ct.match(source, code)
42
43
  end
@@ -46,60 +47,141 @@ You will know that the code and the source file have the same html elements when
46
47
 
47
48
  ```ruby
48
49
  # hola_mundo.html
49
- # <h1>Hola Mundo!</h1>
50
+ # <h1>Come with me if you want to live!</h1>
50
51
  #
51
- >> CodeTerminator::Html.match("hola_mundo.html","<h2>Hola Mundo!</h2>")
52
+ >> ct.match("hola_mundo.html","<h2>Come with me if you want to live!</h2>")
52
53
  # => ["h1 not exist"]
53
54
  ```
54
55
 
56
+ # CSS
57
+ To parse CSS and match the file with css code you just need to do:
58
+ ```ruby
59
+ # code = code get from an editor
60
+ # source = Source of the file you want to compare with
61
+
62
+ # First, validate syntasis of the code
63
+ ct = CodeTerminator::Css.new
64
+ errors = ct.validate_syntax(code)
65
+
66
+ # If code do't have errors, match the code with your html file
67
+ if errors.empty?
68
+ result = ct.match(source, code)
69
+ end
70
+ ```
71
+ If the code and the source mismatch, `ct.match()` will return an array with the differences between code and source file.
72
+ You will know that the code and the source file have the same css elements when the `ct.match()` return a nil array.
73
+
74
+ ```ruby
75
+ # test.css
76
+ # => h1{ margin: 100px; }
77
+ #
78
+ >> ct.match("test.html","h1{ margin: 50px; }")
79
+ # => ["not the same property margin: 100px in selector h1"]
80
+ ```
81
+
55
82
  ##Cheat Sheet
56
83
 
57
84
  ###match(source, code)
58
85
  Match if the code have the same elements than the exercise. Return an array with the mismatches.
59
86
 
87
+ #HTML
60
88
  ```ruby
61
89
  # hola_mundo.html
62
- # => <h1>Hola Mundo!</h1>
90
+ # => <h1>Come with me if you want to live!</h1>
63
91
  ```
64
92
  ```ruby
65
- CodeTerminator::Html.match("hola_mundo.html","<h2>Hola Mundo!</h2>")
93
+ >> ct = CodeTerminator::Html.new
94
+ >> ct.match("hola_mundo.html","<h2>Come with me if you want to live!</h2>")
66
95
  # => ["h1 not exist"]
67
96
  #
68
97
  ```
98
+
99
+ #CSS
100
+ ```ruby
101
+ # test.css
102
+ # => h1{ margin: 100px; }
103
+ ```
104
+ ```ruby
105
+ >> ct = CodeTerminator::Css.new
106
+ >> ct.match("hola_mundo.css","h1{ margin: 50px; }")
107
+ # => ["not the same property margin: 100px in selector h1"]
108
+ #
109
+ ```
110
+
69
111
  ###new_file(source, code)
70
- Create a Html file with the code of the editor. Return a boolean that indicate if the file was created or not.
112
+ Create a Html/Css file with the code of the editor. Return a boolean that indicate if the file was created or not.
113
+ #HTML
71
114
  ```ruby
72
- CodeTerminator::Html.new_file("hola_mundo.html", "<h1>Hola Mundo!</h1>")
115
+ >> ct = CodeTerminator::Html.new
116
+ >> ct.new_file("hola_mundo.html", "<h1>Come with me if you want to live!</h1>")
73
117
  # => true
74
118
  ```
119
+ #CSS
120
+ ```ruby
121
+ >> ct = CodeTerminator::Css.new
122
+ >> ct.new_file("hola_mundo.css", "h1{ margin: 50px; }")
123
+ # => true
124
+ ```
125
+
75
126
  ###read_file(source)
76
127
  Read a html file. Return the text of the file.
128
+ #HTML
77
129
  ```ruby
78
- CodeTerminator::Html.read_file("hola_mundo.html")
79
- # => "<h1>Hola Mundo!</h1>"
130
+ >> ct = CodeTerminator::Html.new
131
+ >> ct.read_file("hola_mundo.html")
132
+ # => "<h1>Come with me if you want to live!</h1>"
133
+ ```
134
+ #CSS
135
+ ```ruby
136
+ >> ct = CodeTerminator::Css.new
137
+ >> ct.read_file("hola_mundo.css")
138
+ # => "h1{ margin: 50px; }"
80
139
  ```
81
140
 
82
141
  ###validate_syntax(code)
83
- Validate if the syntax is correct. Return an array with Nokogiri errors.
142
+ Validate if the syntax is correct. Return an array with errors.
143
+ #HTML
84
144
  ```ruby
85
- CodeTerminator::Html.validate_syntax("<h1>Hola Mundo!</h1")
145
+ >> ct = CodeTerminator::Html.new
146
+ >> ct.validate_syntax("<h1>Come with me if you want to live!</h1")
86
147
  # => [#<Nokogiri::XML::SyntaxError: expected '>'>]
87
148
  ```
88
-
149
+ #CSS
150
+ ```ruby
151
+ >> ct = CodeTerminator::Css.new
152
+ >> ct.validate_syntax("h1{ margi")
153
+ # => ["error"]
154
+ ```
155
+
89
156
  ###get_elements(source)
90
157
  Get html elements of a html file. Return a list of Nokogiri XML objects.
158
+ #HTML
159
+ ```ruby
160
+ >> ct = CodeTerminator::Html.new
161
+ >> ct.get_elements("hola_mundo.html")
162
+ # => [#<Nokogiri::XML::Element:0x3fe3391547d8 name="h1" children=[#<Nokogiri::XML::Text:0x3fe33915474c "Come with me if you want to live!">]>, #<Nokogiri::XML::Text:0x3fe33915474c "Come with me if you want to live!">]
163
+ ```
164
+ #CSS
91
165
  ```ruby
92
- CodeTerminator::Html.get_elements("hola_mundo.html")
93
- # => [#<Nokogiri::XML::Element:0x3fe3391547d8 name="h1" children=[#<Nokogiri::XML::Text:0x3fe33915474c "Hola Mundo!">]>, #<Nokogiri::XML::Text:0x3fe33915474c "Hola Mundo!">]
166
+ >> ct = CodeTerminator::Css.new
167
+ >> ct.get_elements("hola_mundo.css")
168
+ # => [{:selector=>"h1"}, {:selector=>"h1", :property=>"margin", :value=>"50px"}]
94
169
  ```
95
170
 
96
171
  ###print_elements(Elements Array)
97
172
  Get the elements of the code in html format. Return a string with elements in html.
98
173
  <br>
99
174
  **Get 'Elements Array' calling 'get_elements()'
175
+ #HTML
100
176
  ```ruby
101
- CodeTerminator::Html.print_elements([#<Nokogiri::XML::Element:0x3fe31dc42bfc name="h1" children=[#<Nokogiri::XML::Text:0x3fe31dc42b70 "hola mundo">]>, #<Nokogiri::XML::Text:0x3fe31dc42b70 "hola mundo">])
102
- # => "name = h1<br><hr>name = text<br>content = hola mundo<br><hr>"
177
+ CodeTerminator::Html.print_elements([#<Nokogiri::XML::Element:0x3fe31dc42bfc name="h1" children=[#<Nokogiri::XML::Text:0x3fe31dc42b70 "Come with me if you want to live!">]>, #<Nokogiri::XML::Text:0x3fe31dc42b70 "hola mundo">])
178
+ # => "name = h1<br><hr>name = text<br>content = Come with me if you want to live!<br><hr>"
179
+ #
180
+ ```
181
+ #CSS
182
+ ```ruby
183
+ CodeTerminator::Css.print_elements([{:selector=>"h1"}, {:selector=>"h1", :property=>"margin", :value=>"50px"}])
184
+ # => "selector = h1<br><hr>property = margin<br>value = 50px<br><hr>"
103
185
  #
104
186
  ```
105
187
 
@@ -121,4 +203,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/eponce
121
203
  ## License
122
204
 
123
205
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
124
-
Binary file
Binary file
@@ -53,7 +53,6 @@ class CodeTerminator::Css
53
53
  reader = read_file(source)
54
54
  parser = Crass.parse(reader)
55
55
  errors = parser.pop
56
- p errors
57
56
  elements = Array.new
58
57
  selector = ""
59
58
 
@@ -86,7 +85,7 @@ class CodeTerminator::Css
86
85
  # IMPORTANT Method not validate <STYLE> tag from the code
87
86
 
88
87
  def validate_syntax(code)
89
- valid = true
88
+ errors = Array.new
90
89
  tree = Crass.parse(code)
91
90
  last = tree.length
92
91
  if !tree[last-1].nil?
@@ -94,16 +93,16 @@ class CodeTerminator::Css
94
93
  if !nodes.nil?
95
94
  nodes.each do |children|
96
95
  if children[:node].to_s == "error"
97
- valid = false
96
+ errors[0] = "error"
98
97
  end
99
98
  end
100
99
  #else
101
100
  #valid = false
102
101
  end
103
102
  else
104
- valid = false
103
+ errors[0] = "error"
105
104
  end
106
- valid
105
+ errors
107
106
  end
108
107
 
109
108
  # Read a css file. Return a string with the text of the file.
@@ -1,3 +1,3 @@
1
1
  module CodeTerminator
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_terminator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evelin Ponce
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-23 00:00:00.000000000 Z
11
+ date: 2016-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,8 @@ files:
75
75
  - code_terminator-0.1.2.gem
76
76
  - code_terminator-0.1.3.gem
77
77
  - code_terminator-0.2.0.gem
78
+ - code_terminator-0.2.1.gem
79
+ - code_terminator-0.2.2.gem
78
80
  - code_terminator.gemspec
79
81
  - exe/code_terminator
80
82
  - exercises/new.html