tablerize 1.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e70970cea20a8c6ee05fe6ed66d56f69389d40cd
4
+ data.tar.gz: 577fb09939cf9995bef8886dd81f1ef9ffc46f9d
5
+ SHA512:
6
+ metadata.gz: 08fbcc9174c61c2b4c09bf6dab052f8106b34b01f991f4f27d73cb75654e4c6652e96b59e5d6919becc136e1d26076758413a0dbebdb5968bb9cac68e4f8acfd
7
+ data.tar.gz: b6bc1783e850f6a49317cc5a84625fe87b1f0b1213a9eaf60d97920590e8819742e8a764ead5e6ce3186eb18b475fe26001790d6b4dc31fc7ab418b82c21dc9b
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /tablerize-*.gem
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format=documentation
3
+ --tty
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ script: rspec
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+ - ruby-head
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2015 IFTTT Inc
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,15 @@
1
+ GEM_NAME := tablerize
2
+
3
+ all:
4
+ gem build $(GEM_NAME).gemspec
5
+
6
+ install: all
7
+ gem install $(GEM_NAME)
8
+
9
+ uninstall:
10
+ gem uninstall $(GEM_NAME)
11
+
12
+ clean:
13
+ rm -fv -- $(GEM_NAME)-*.gem
14
+
15
+ .PHONY: all install clean
data/README.md ADDED
@@ -0,0 +1,264 @@
1
+ Tablerize
2
+ =========
3
+
4
+ Tablerize is a format for writing tables using YAML/JSON-compatible data
5
+ structures, and Ruby code to convert it to HTML.
6
+
7
+
8
+ ## Usage
9
+
10
+ To install
11
+
12
+ ```shell
13
+ cd tablerize
14
+ make install
15
+ # or (soon)
16
+ gem install tablerize
17
+ ```
18
+
19
+ You can use it in Ruby...
20
+
21
+ ```ruby
22
+ require 'tablerize'
23
+ puts Tablerize.load_file(path).to_html
24
+ # or
25
+ puts Tablerize.load(yaml_string).to_html
26
+ # or
27
+ puts Tablerize.make_table(object_from_yaml_or_json).to_html
28
+ ```
29
+
30
+ ...or from the command line
31
+
32
+ ```shell
33
+ tablerize path/to/yaml-table.yml [...]
34
+ ```
35
+
36
+
37
+ ## Why?
38
+
39
+ Markdown is easy on the eyes. It helps you write formatted documents in plain
40
+ text in a way that is meaningful even without rendering. One thing that [the
41
+ original Markdown specification] doesn't support is tables. But many authors
42
+ writing in Markdown want to write tables, so Markdown libraries have come up
43
+ with various but similar ways of representing tables in Markdown.
44
+
45
+ [the original Markdown specification]: http://daringfireball.net/projects/markdown/syntax
46
+
47
+ Tables exist to help you line things up. But these Markdown tables force you to
48
+ either line things up yourself, or deal with the unreadable results. Here's some
49
+ a table from the [Markdown Cheatsheet]:
50
+
51
+ [Markdown Cheatsheet]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
52
+
53
+ ```
54
+ | Tables | Are | Cool |
55
+ | ------------- |:-------------:| -----:|
56
+ | col 3 is | right-aligned | $1600 |
57
+ | col 2 is | centered | $12 |
58
+ | zebra stripes | are neat | $1 |
59
+ ```
60
+
61
+ This is pretty readable, but unless you know exactly what the table looks like
62
+ beforehand, lining everything up takes a lot of time! But that's okay, you don't
63
+ _actually_ need to do that, you can just have this mess instead:
64
+
65
+ ```
66
+ Markdown | Less | Pretty
67
+ --- | --- | ---
68
+ *Still* | `renders` | **nicely**
69
+ 1 | 2 | 3
70
+ ```
71
+
72
+ Why is this less pretty? Because, while tables exist to organize data, the data
73
+ looks pretty disorganized here. This goes against the concept of having raw
74
+ Markdown be readable!
75
+
76
+ Depending what Markdown library you're using, the examples above might not even
77
+ render. Many flavors of Markdown tables exist, and accept table syntax in
78
+ varying degrees of leniency. Not only does this make writing tables even harder
79
+ ("which Markdown library am I using and does it support table feature X?"), but
80
+ it suggests that these these libraries are just making concessions with the
81
+ constraints of representing a table in this way. Tables take data, something
82
+ that should be computer-readable, and make them human-readable. Unrendered
83
+ Markdown tables, sadly, usually are neither.
84
+
85
+ Oh, and with this traditional syntax, you can pretty much forget about nesting
86
+ tables.
87
+
88
+
89
+ ## So what's Tablerize?
90
+
91
+ **Tablerize** attempts to solve these problems. In its purest form, it is a
92
+ specification of a _human-readable representation of tables in YAML/JSON-
93
+ compatible data_. Since YAML is human-readable, so can Tablerize. This project
94
+ also includes a Ruby library and command-line tool to convert this YAML- based
95
+ format into HTML tables. It can be run with:
96
+
97
+ ```shell
98
+ tablerize path/to/yaml-table.yml [...]
99
+ ```
100
+
101
+ A complementary project, [kramdown-tablerize], allows embedding of YAML
102
+ tables into [kramdown] Markdown documents.
103
+
104
+ [kramdown]: http://kramdown.gettalong.org/
105
+ [kramdown-tablerize]: https://github.com/IFTTT/kramdown-tablerize
106
+
107
+
108
+ ## Format
109
+
110
+ Here's example: Searching for "statistics" on Google news, I come across [a
111
+ Forbes article] with a neat little table I want to type up. Let's try it now
112
+ ([examples/example-1.yml]):
113
+
114
+ [a Forbes article]: http://www.forbes.com/sites/gregorymcneal/2014/06/27/nsa-releases-new-statistical-details-about-surveillance/
115
+ [examples/example-1.yml]: examples/example-1.yml
116
+
117
+ ```yaml
118
+ class: [statistics-table, nsa-surveillance-details]
119
+
120
+ cols:
121
+ - name: authority
122
+ - name: num_orders
123
+ - name: num_targets
124
+
125
+ data:
126
+ - class: table-header
127
+ authority: Legal Authority
128
+ num_orders: Annual Number of Orders
129
+ num_targets: Estimated Number of Targets Affected
130
+ - authority: |
131
+ __FISA Orders__
132
+ Based on probable cause
133
+ (Title I and III of FISA, Sections 703 and 704 of FISA)
134
+ num_orders: "1,167 orders"
135
+ num_targets: "1,144"
136
+ - authority: |
137
+ __Section 702__
138
+ of FISA
139
+ num_orders: "1 order"
140
+ num_targets: "89,138"
141
+ - authority: |
142
+ __FISA Pen Register/Trap and Trace__
143
+ (Title IV of FISA)
144
+ num_orders: "131 orders"
145
+ num_targets: "319"
146
+ ```
147
+
148
+ Here's what it looks like as HTML, using a common Markdown stylesheet ("GitHub"
149
+ on Mou/Macdown):
150
+
151
+ ![screenshot](https://cloud.githubusercontent.com/assets/1570168/5449994/b09875c8-84b3-11e4-9a6a-b489a391d221.png)
152
+
153
+ Here's an example that illustrates some of the more advanced features of
154
+ Tablerize ([examples/example-2.yml]):
155
+
156
+ [examples/example-2.yml]: examples/example-2.yml
157
+
158
+ ```yaml
159
+ class: [http-spec-exchange, another-class] # this line is optional
160
+
161
+ cols: # column specifications and ordering
162
+ - name: k # is used to identify the column below
163
+ class: http-key # is applied to each cell (td) in the column
164
+ - name: v
165
+ class: http-value
166
+
167
+ data: # data, by row
168
+ - v: GET # v corresponds to cols.1.name above
169
+ k: Method # k corresponds to cols.0.name above
170
+ - k: Parameters # the order of the columns in data doesn't matter
171
+ v:
172
+ # nest tables by nesting another YAML dictionary, in the same format
173
+ class: http-spec-params
174
+
175
+ cols:
176
+ - name: k
177
+ - name: v
178
+
179
+ data:
180
+ - k: '`client_id`' # backticks must be quoted!
181
+ v: |
182
+ A client ID for your service as set in your configuration.
183
+
184
+ a new line, wow! Let's see regular Markdown tables do that...
185
+ # <p>...</p> gets inserted only if there are multiple paragraphs
186
+ - k: '`type`'
187
+ v: '`code`'
188
+ - k: '`state`'
189
+ v: An anti-forgery token provided by the API.
190
+ - k: redirect_uri
191
+ v: '`https://example.com/api/{{your_service}}/authorize`'
192
+ ```
193
+
194
+ With the right CSS, it becomes this:
195
+
196
+ ![screenshot](https://cloud.githubusercontent.com/assets/1570168/3435774/15108594-0099-11e4-8175-d820206c471e.png)
197
+
198
+
199
+ ## Tips & Caveats
200
+
201
+ - YAML tip: Backticks `` ` `` and some other characters need to be quoted
202
+ because they have special meaing in YAML or are otherwise not allowed to be
203
+ unquoted by YAML. Other suspicious characters include commas `,`, ampersands
204
+ `&`, and asterisks `*` and have been implicated in similar crimes. If
205
+ readability isn't an issue and there's been a syntax error spree in your
206
+ area, you can go ahead and quote every string just be safe.
207
+
208
+ - Don't use `class` as a column name, since it is used for classes. Unless you
209
+ really want to. In which case you can. But it still will be used for
210
+ classes.
211
+
212
+ - Auto column classes: As a convenience, if a table has a class `my-table` and
213
+ a column is named `column-1`, then all the cells in the column will have the
214
+ class `my-table-column-1`. This only happens for the first table class
215
+ listed. If you don't want this to happen, make the first table class `null`;
216
+ it will be ignored and columns will not have automatically-generated
217
+ classes.
218
+
219
+
220
+ ## The Road Ahead
221
+
222
+ - Support using representing two-column tables as key and value. YAML doesn't
223
+ support ordered dictionaries, so this will be done by looking at the only
224
+ key- value pair inside each dictionary in a list:
225
+
226
+ ```yaml
227
+ data:
228
+ - wake up: done
229
+ - brush teeth: done
230
+ - eat breakfast: not done
231
+ ```
232
+
233
+ - Allow HTML attributes to be placed anywhere classes currently can.
234
+
235
+ - Allow arbitrary HTML _and_ tables as siblings together inside cells. This
236
+ will probably be implemented by recursively calling [kramdown-yaml-
237
+ tablerize], if installed.
238
+
239
+ - Allow empty cells to be created by simply not including keys or making keys
240
+ with no value (represented as `null`/`nil`/`None`). Possibly add a "strict
241
+ mode" setting that causes these to error instead.
242
+
243
+ - Support `thead` and `tfoot`. Perhaps add support `tbody`, which will be a
244
+ synonym for `data`.
245
+
246
+ - For simple tables, allow outputting to Markdown, for GitHub and other sites
247
+ that don't allow HTML in Markdown.
248
+
249
+ - [textmate/yaml.tmbundle], the YAML syntax highlighter used by TextMate,
250
+ Sublime Text, and GitHub isn't perfect. Fix the plugin and use the
251
+ examples in this README as test cases. _Update: GitHub now highlights the
252
+ YAML in this file almost correctly, but [textmate/yaml.tmbundle] doesn't
253
+ seem to be updated. GitHub's probably using something else to do syntax
254
+ highlighting._
255
+
256
+ [textmate/yaml.tmbundle]: https://github.com/textmate/yaml.tmbundle
257
+
258
+ ## Credit
259
+
260
+ **Tablerize** was originally designed and written by [@szhu] at [@IFTTT].
261
+
262
+ [rfc1459/kramdown-gist]: https://github.com/rfc1459/kramdown-gist
263
+ [@szhu]: https://github.com/szhu
264
+ [@IFTTT]: https://github.com/IFTTT
data/bin/tablerize ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # Command-line interface to the tablerize gem.
3
+
4
+ if ARGV.empty?
5
+ $stderr.puts "usage: #{$PROGRAM_NAME} path/to/yaml-table.yml [...]"
6
+ exit 1
7
+ end
8
+
9
+ begin
10
+ require_relative '../lib/tablerize'
11
+ rescue LoadError
12
+ require 'tablerize'
13
+ end
14
+
15
+ ARGV.each do |path|
16
+ puts Tablerize.load_file(path).to_html
17
+ end
@@ -0,0 +1,9 @@
1
+ <table class="statistics-table nsa-surveillance-details"><tbody>
2
+ <tr class="table-header"><td class="statistics-table-authority">Legal Authority</td><td class="statistics-table-num_orders">Annual Number of Orders</td><td class="statistics-table-num_targets">Estimated Number of Targets Affected</td></tr>
3
+ <tr><td class="statistics-table-authority"><strong>FISA Orders</strong><br />
4
+ Based on probable cause (Title I and III of FISA, Sections 703 and 704 of FISA)</td><td class="statistics-table-num_orders">1,167 orders</td><td class="statistics-table-num_targets">1,144</td></tr>
5
+ <tr><td class="statistics-table-authority"><strong>Section 702</strong><br />
6
+ of FISA</td><td class="statistics-table-num_orders">1 order</td><td class="statistics-table-num_targets">89,138</td></tr>
7
+ <tr><td class="statistics-table-authority"><strong>FISA Pen Register/Trap and Trace</strong><br />
8
+ (Title IV of FISA)</td><td class="statistics-table-num_orders">131 orders</td><td class="statistics-table-num_targets">319</td></tr>
9
+ </tbody></table>
@@ -0,0 +1,27 @@
1
+ class: [statistics-table, nsa-surveillance-details]
2
+
3
+ cols:
4
+ - name: authority
5
+ - name: num_orders
6
+ - name: num_targets
7
+
8
+ data:
9
+ - class: table-header
10
+ authority: Legal Authority
11
+ num_orders: Annual Number of Orders
12
+ num_targets: Estimated Number of Targets Affected
13
+ - authority: |
14
+ __FISA Orders__
15
+ Based on probable cause (Title I and III of FISA, Sections 703 and 704 of FISA)
16
+ num_orders: "1,167 orders"
17
+ num_targets: "1,144"
18
+ - authority: |
19
+ __Section 702__
20
+ of FISA
21
+ num_orders: "1 order"
22
+ num_targets: "89,138"
23
+ - authority: |
24
+ __FISA Pen Register/Trap and Trace__
25
+ (Title IV of FISA)
26
+ num_orders: "131 orders"
27
+ num_targets: "319"
@@ -0,0 +1,13 @@
1
+ <table class="http-spec-exchange another-class"><tbody>
2
+ <tr><td class="http-key http-spec-exchange-k">Method</td><td class="http-value http-spec-exchange-v">GET</td></tr>
3
+ <tr><td class="http-key http-spec-exchange-k">Parameters</td><td class="http-value http-spec-exchange-v">
4
+ <table class="http-spec-params"><tbody>
5
+ <tr><td class="http-spec-params-k"><code>client_id</code></td><td class="http-spec-params-v"><p>A client ID for your service as set in your configuration.</p>
6
+
7
+ <p>a new line, wow! Let’s see regular Markdown tables do that…</p></td></tr>
8
+ <tr><td class="http-spec-params-k"><code>type</code></td><td class="http-spec-params-v"><code>code</code></td></tr>
9
+ <tr><td class="http-spec-params-k"><code>state</code></td><td class="http-spec-params-v">An anti-forgery token provided by the API.</td></tr>
10
+ <tr><td class="http-spec-params-k">redirect_uri</td><td class="http-spec-params-v"><code>https://example.com/api/{{your_service}}/authorize</code></td></tr>
11
+ </tbody></table>
12
+ </td></tr>
13
+ </tbody></table>
@@ -0,0 +1,33 @@
1
+ class: [http-spec-exchange, another-class] # this line is optional
2
+
3
+ cols: # column specifications and ordering
4
+ - name: k # is used to identify the column below
5
+ class: http-key # is applied to each cell (td) in the column
6
+ - name: v
7
+ class: http-value
8
+
9
+ data: # data, by row
10
+ - v: GET # v corresponds to cols.1.name above
11
+ k: Method # k corresponds to cols.0.name above
12
+ - k: Parameters # the order of the columns in data doesn't matter
13
+ v:
14
+ # nest tables by nesting another YAML dictionary, in the same format
15
+ class: http-spec-params
16
+
17
+ cols:
18
+ - name: k
19
+ - name: v
20
+
21
+ data:
22
+ - k: '`client_id`' # backticks must be quoted!
23
+ v: |
24
+ A client ID for your service as set in your configuration.
25
+
26
+ a new line, wow! Let's see regular Markdown tables do that...
27
+ # <p>...</p> gets inserted only if there are multiple paragraphs
28
+ - k: '`type`'
29
+ v: '`code`'
30
+ - k: '`state`'
31
+ v: An anti-forgery token provided by the API.
32
+ - k: redirect_uri
33
+ v: '`https://example.com/api/{{your_service}}/authorize`'
@@ -0,0 +1,67 @@
1
+ require 'erb'
2
+
3
+ module Tablerize
4
+ class HtmlElement
5
+ end
6
+
7
+ # A RawHtmlElement represents arbitrary HTML.
8
+ class RawHtmlElement < HtmlElement
9
+ attr_reader :html
10
+ alias_method :to_html, :html
11
+
12
+ def initialize(html)
13
+ @html = html
14
+ end
15
+ end
16
+ NEWLINE = RawHtmlElement.new("\n")
17
+
18
+ # A StructuredHtmlElement represents HTML tags enclosing an array of
19
+ # HtmlElements.
20
+ class StructuredHtmlElement < HtmlElement
21
+ attr_accessor :tag
22
+ attr_reader :attrs, :classes, :children
23
+
24
+ def initialize(tag, opts = {})
25
+ @tag = tag
26
+ @attrs = {}
27
+ @classes = []
28
+ @children = []
29
+ add_class opts[:class] unless opts[:class].nil?
30
+ @attrs.update opts[:attrs] unless opts[:attrs].nil?
31
+ end
32
+
33
+ def add_class(classes)
34
+ if classes.respond_to? :each
35
+ classes.each do |klass|
36
+ add_single_class klass
37
+ end
38
+ else
39
+ add_single_class classes
40
+ end
41
+ end
42
+
43
+ def to_html
44
+ "<#{tag}#{attrs_html(@attrs)}>#{inner_html}</#{tag}>"
45
+ end
46
+
47
+ private
48
+
49
+ def add_single_class(klass)
50
+ return if klass.nil? || klass.empty?
51
+ return if @classes.include? klass
52
+ @classes << klass
53
+ end
54
+
55
+ def attrs_html(attrs)
56
+ out = %( class="#{ERB::Util.h @classes.join(' ')}") if @classes.length > 0
57
+ attrs.each do |attr, value|
58
+ out << %( #{attr}="#{h value}")
59
+ end
60
+ out
61
+ end
62
+
63
+ def inner_html
64
+ @children.map(&:to_html).join('')
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,3 @@
1
+ module Tablerize
2
+ VERSION = "1.0.1"
3
+ end
data/lib/tablerize.rb ADDED
@@ -0,0 +1,71 @@
1
+ require_relative 'tablerize/version'
2
+ require_relative 'tablerize/html_element'
3
+
4
+ require 'yaml'
5
+
6
+ module Tablerize
7
+ # Tablerizes a YAML file, returning a Tablerize::HtmlElement.
8
+ def self.load_file(path)
9
+ data = YAML.load_file path
10
+ make_table(data)
11
+ end
12
+
13
+ # Tablerizes a YAML string, returning a Tablerize::HtmlElement.
14
+ def self.load(content)
15
+ data = YAML.load content
16
+ make_table(data)
17
+ end
18
+
19
+ # Tablerizes an object, returning a Tablerize::HtmlElement.
20
+ def self.make_table(data)
21
+ table = StructuredHtmlElement.new('table', class: data['class'])
22
+ tbody = StructuredHtmlElement.new('tbody')
23
+ tbody.children << NEWLINE
24
+ cols = data['cols']
25
+ data['data'].each do |row|
26
+ tr = StructuredHtmlElement.new('tr', class: row['class'])
27
+ cols.each do |col|
28
+ td = StructuredHtmlElement.new('td', class: col['class'])
29
+ col_key = col['name']
30
+ if (col_class_prefix = table.classes[0])
31
+ td.add_class "#{col_class_prefix}-#{col_key}"
32
+ end
33
+ cell = row[col_key]
34
+ if cell.is_a?(Hash)
35
+ td.children << NEWLINE
36
+ td.children << make_table(cell)
37
+ td.children << NEWLINE
38
+ else
39
+ td.children << RawHtmlElement.new(markdown_strip cell)
40
+ end
41
+ tr.children << td
42
+ end
43
+ tbody.children << tr
44
+ tbody.children << NEWLINE
45
+ end
46
+ table.children << tbody
47
+ table
48
+ end
49
+
50
+ private
51
+
52
+ # This method can easily be replaced to use any other Markdown library.
53
+ # As of now, you'll have to manually modify this method.
54
+ def self.markdown(text)
55
+ require 'kramdown'
56
+ Kramdown::Document.new(text).to_html.strip
57
+ end
58
+
59
+ # Process markdown removing <p>...</p> from one-liners.
60
+ def self.markdown_strip(text)
61
+ html = markdown text
62
+ p_start = '<p>'
63
+ p_end = '</p>'
64
+ if html.start_with?(p_start) && html.end_with?(p_end) &&
65
+ html.scan(p_start).count == 1 && html.scan(p_end).count == 1
66
+ html[3...-4]
67
+ else
68
+ html
69
+ end
70
+ end
71
+ end
@@ -0,0 +1 @@
1
+ require_relative '../lib/tablerize'
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tablerize do
4
+ ['example-1', 'example-2'].each do |test_name|
5
+ context test_name do
6
+ reference_result = File.read "examples/#{test_name}.html"
7
+
8
+ it "should be correctly converted via load_file" do
9
+ test_result = Tablerize.load_file("examples/#{test_name}.yml").to_html
10
+ expect(test_result.chomp).to eq(reference_result.chomp)
11
+ end
12
+
13
+ it "should be correctly converted via load" do
14
+ test_result = Tablerize.load(File.read "examples/#{test_name}.yml").to_html
15
+ expect(test_result.chomp).to eq(reference_result.chomp)
16
+ end
17
+ end
18
+ end
19
+ end
data/tablerize.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ require './lib/tablerize/version'
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'tablerize'
5
+ gem.summary = 'Convert YAML to HTML tables.'
6
+ gem.description = <<-END
7
+ Tablerize converts YAML to HTML tables. Say goodbye to aligning tables
8
+ in Markdown.
9
+ END
10
+
11
+ gem.version = Tablerize::VERSION
12
+
13
+ gem.homepage = 'https://github.com/IFTTT/tablerize'
14
+ gem.authors = ['Sean Zhu']
15
+ gem.email = 'opensource+tablerize@szhu.me'
16
+ gem.license = 'MIT'
17
+
18
+ gem.add_dependency 'kramdown', '~> 1.2', '>= 1.2.0'
19
+ gem.executables = ['tablerize']
20
+ gem.files = `git ls-files`.split
21
+ gem.require_paths = ['lib']
22
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tablerize
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sean Zhu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: kramdown
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.0
33
+ description: |2
34
+ Tablerize converts YAML to HTML tables. Say goodbye to aligning tables
35
+ in Markdown.
36
+ email: opensource+tablerize@szhu.me
37
+ executables:
38
+ - tablerize
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - ".gitignore"
43
+ - ".rspec"
44
+ - ".travis.yml"
45
+ - LICENSE
46
+ - Makefile
47
+ - README.md
48
+ - bin/tablerize
49
+ - examples/example-1.html
50
+ - examples/example-1.yml
51
+ - examples/example-2.html
52
+ - examples/example-2.yml
53
+ - lib/tablerize.rb
54
+ - lib/tablerize/html_element.rb
55
+ - lib/tablerize/version.rb
56
+ - spec/spec_helper.rb
57
+ - spec/tablerize_spec.rb
58
+ - tablerize.gemspec
59
+ homepage: https://github.com/IFTTT/tablerize
60
+ licenses:
61
+ - MIT
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 2.2.2
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: Convert YAML to HTML tables.
83
+ test_files: []