texta 0.1.2 → 0.1.3

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.
Files changed (4) hide show
  1. data/Rakefile +1 -1
  2. data/lib/texta.rb +76 -4
  3. data/texta.gemspec +2 -2
  4. metadata +2 -2
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('texta', '0.1.2') do |p|
5
+ Echoe.new('texta', '0.1.3') do |p|
6
6
  p.description = "texta: heuristic text formatting"
7
7
  p.url = "http://github.com/pboy/texta"
8
8
  p.author = "pboy"
data/lib/texta.rb CHANGED
@@ -4,6 +4,8 @@ require "htmlentities"
4
4
  require "rdiscount"
5
5
 
6
6
  module Texta
7
+ class Error < ArgumentError; end
8
+
7
9
  def self.init
8
10
  String.send :include, self
9
11
  end
@@ -50,23 +52,50 @@ module Texta
50
52
 
51
53
  def process(node)
52
54
  case node.name
53
- when *%w(i b li)
55
+ # bold
56
+ when "b", "strong"
57
+ "**" + children(node).join(" ") + "**"
58
+ # italic
59
+ when "i", "em"
60
+ "_" + children(node).join(" ") + "_"
61
+ # plain
62
+ when "u"
54
63
  children(node).join(" ")
64
+ when "p"
65
+ children(node).join(" ") + "\n"
66
+ when "br"
67
+ "\n"
68
+
69
+ # headlines
55
70
  when /h([1-2])/
56
71
  char = $1 == "1" ? "=" : "-"
57
72
  s = children(node).join(" ")
58
73
  "#{s}\n" + char * [ [s.length, 6].min, 32 ].max + "\n\n"
59
74
  when /h([1-6])/
60
75
  "#" * $1.to_i + " " + children(node).join(" ") + "\n\n"
76
+
77
+ # text nodes
61
78
  when "text"
62
79
  s = node.to_s.gsub(/(^\s+)|(\s+$)/, "")
63
80
  s == "" ? nil : s
64
- when "p"
81
+
82
+ # tables
83
+
84
+ when "table"
85
+ children(node).join("")
86
+ when "tr"
65
87
  children(node).join(" ") + "\n"
88
+ when "th"
89
+ "**" + children(node).join(" ") + "**"
90
+ when "td"
91
+ children(node).join(" ")
92
+ # lists
66
93
  when "ul"
67
94
  children(node).map { |s| "- #{s}\n" }.join + "\n"
95
+ when "li"
96
+ children(node).join(" ")
68
97
  else
69
- invalid_argument!("node #{node.name}")
98
+ raise Error, "node <#{node.name}>"
70
99
  end
71
100
  end
72
101
  end
@@ -147,7 +176,7 @@ HTML
147
176
  end
148
177
 
149
178
  def test_string_module
150
- assert_equal "a chd d\n", "a <b>chd</b> d".texta(:text)
179
+ assert_equal "a **chd** d\n", "a <b>chd</b> d".texta(:text)
151
180
  end
152
181
 
153
182
  def test_invalid_option
@@ -192,4 +221,47 @@ HTML
192
221
  def test_nil
193
222
  assert_testa nil, nil, nil
194
223
  end
224
+
225
+ def test_table
226
+ input = <<-HTML
227
+ <table><tr>
228
+ <th>Farben</th>
229
+ <td>halbtransparent, halbtransparent blau (Polycarbonat)</td>
230
+ </tr>
231
+ <tr>
232
+ <th>Material</th>
233
+ <td>Körper und Flügel aus Polycarbonat</td>
234
+ </tr>
235
+ <tr>
236
+ <th>Abmessungen</th>
237
+ <td>
238
+ <u>Höhe</u>: 44cm<br>
239
+ <u>Durchmesser</u>: 122cm<br>
240
+ </td>
241
+ </tr>
242
+ <tr><th>Sonstiges</th><td>Steuerung über Fernbedienung</td></tr>
243
+ </table>
244
+ HTML
245
+
246
+ text = <<-TEXT
247
+ **Farben** halbtransparent, halbtransparent blau (Polycarbonat)
248
+ **Material** Körper und Flügel aus Polycarbonat
249
+ **Abmessungen** Höhe : 44cm
250
+ Durchmesser : 122cm
251
+
252
+ **Sonstiges** Steuerung über Fernbedienung
253
+ TEXT
254
+
255
+ html = <<-HTML
256
+ <p><strong>Farben</strong> halbtransparent, halbtransparent blau (Polycarbonat)
257
+ <strong>Material</strong> K&ouml;rper und Fl&uuml;gel aus Polycarbonat
258
+ <strong>Abmessungen</strong> H&ouml;he : 44cm
259
+ Durchmesser : 122cm</p>
260
+
261
+ <p> <strong>Sonstiges</strong> Steuerung &uuml;ber Fernbedienung</p>
262
+ HTML
263
+
264
+ assert_testa input, text, html
265
+ end
266
+
195
267
  end
data/texta.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{texta}
5
- s.version = "0.1.2"
5
+ s.version = "0.1.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["pboy"]
9
- s.date = %q{2009-12-23}
9
+ s.date = %q{2009-12-26}
10
10
  s.description = %q{texta: heuristic text formatting}
11
11
  s.email = %q{eno-pboy@open-lab.org}
12
12
  s.extra_rdoc_files = ["README.rdoc", "lib/texta.rb"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: texta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - pboy
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-23 00:00:00 +01:00
12
+ date: 2009-12-26 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency