typogruby 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,7 +4,7 @@ Helps you improve your web typograpbhy with some standard text filters.
4
4
 
5
5
  This project is based on Django's Typogrify, so the best introduction to read would be [Jeff Croft's][1].
6
6
 
7
- I created this gem to easily share these text filters in some tiny Ruby projects, including a TextMate bundle. For production code I recommend checking out the originals first.
7
+ I created this gem to easily share these text filters in some tiny Ruby projects, including [a TextMate bundle][5]. For production code I recommend checking out the originals first.
8
8
 
9
9
  ## General Usage
10
10
 
@@ -23,6 +23,16 @@ Or, you can include the library in a helper or something:
23
23
  include Typogruby
24
24
  improve('Hello, world!')
25
25
 
26
+ See the [full API documentation][4] for more information. You could also use [this Textmate Bundle][5].
27
+
28
+ ## From the command line
29
+
30
+ You can also use typogruby directly from the command line:
31
+
32
+ typogruby MY_FILE
33
+
34
+ This will output the contents of your file with all filters applied. Use `typogruby -h` for more information and options.
35
+
26
36
  ## References
27
37
 
28
38
  * Based on [typography-helper][2]
@@ -32,6 +42,25 @@ Or, you can include the library in a helper or something:
32
42
  [1]: http://jeffcroft.com/blog/2007/may/29/typogrify-easily-produce-web-typography-doesnt-suc/
33
43
  [2]: http://github.com/hunter/typography-helper
34
44
  [3]: http://code.google.com/p/typogrify
45
+ [4]: http://avdgaag.github.com/typogruby
46
+ [5]: http://github.com/avdgaag/Typography-tmbundle
47
+
48
+ ## Changelog
49
+
50
+ ### 1.0.3
51
+
52
+ * Bugfix: caps also ignores unequal but same excepted tags
53
+ * Feature: added command-line program
54
+ * Improved documentation
55
+
56
+ ### 1.0.2
57
+
58
+ * Bugfix: initial_quotes also wraps named HTML entities
59
+ * Bugfix: caps no longer wraps consecutive numbers
60
+
61
+ ### 1.0
62
+
63
+ * First release
35
64
 
36
65
  ## Note on Patches/Pull Requests
37
66
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.0.3
data/bin/typogruby ADDED
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env ruby -rubygems
2
+ require 'typogruby'
3
+ require 'optparse'
4
+
5
+ operations = [:smartypants, :initial_quotes, :amp, :widont, :caps]
6
+ explicit_on = []
7
+ explicit_off = []
8
+
9
+ OptionParser.new do |options|
10
+ options.banner = <<-EOS
11
+ Improves web typography with text filters.
12
+
13
+ By default all filters are applied. You can disable partical filters using
14
+ the --no switch, or run only specified filters.
15
+
16
+ Examples:
17
+
18
+ typogruby FILE Runs all filters
19
+ typogruby --no-widows FILE Runs all filters except for widows
20
+ typogruby -w FILE Runs only the filter for widows
21
+ typogruby --widows FILE Runs only the filter for widows
22
+
23
+ Usage: typogruby [options] filename [filename, ...]
24
+ EOS
25
+
26
+ options.separator ""
27
+ options.separator "Available options:"
28
+
29
+ options.on '-s', '--[no-]smartypants', 'Apply smartypants' do |v|
30
+ (v ? explicit_on : explicit_off) << :smartypants
31
+ end
32
+
33
+ options.on '-q', '--[no-]quotes', 'Wrap initial quotes' do |v|
34
+ (v ? explicit_on : explicit_off) << :initial_quotes
35
+ end
36
+
37
+ options.on '-a', '--[no-]amps', 'Wrap ampersands' do |v|
38
+ (v ? explicit_on : explicit_off) << :amp
39
+ end
40
+
41
+ options.on '-w', '--[no-]widows', 'Prevent widows' do |v|
42
+ (v ? explicit_on : explicit_off) << :widont
43
+ end
44
+
45
+ options.on '-c', '--[no-]caps', 'Wrap consecutive capitals' do |v|
46
+ (v ? explicit_on : explicit_off) << :caps
47
+ end
48
+
49
+ options.on_tail '-h', '--help', 'Show this message' do
50
+ $stderr.print options
51
+ exit
52
+ end
53
+
54
+ options.on_tail '-v', '--version', 'Display version information' do
55
+ $stderr.print Typogruby.version
56
+ exit
57
+ end
58
+ options.parse!
59
+ end
60
+
61
+ operations_todo = if explicit_off.any? && explicit_on.empty?
62
+ operations - explicit_off
63
+ elsif explicit_off.empty? && explicit_on.any?
64
+ explicit_on
65
+ else
66
+ operations
67
+ end
68
+
69
+ unless ARGV.any?
70
+ $stderr.puts 'No file specified'
71
+ exit 1
72
+ end
73
+
74
+ output = ARGV.inject('') do |output, filename|
75
+ begin
76
+ output + operations_todo.inject(File.read(filename)) { |t, o| Typogruby.send(o, t) }
77
+ rescue
78
+ $stderr.print "Error processing '#{filename}'"
79
+ output
80
+ end
81
+ end
82
+
83
+ $stdout.print output
data/lib/typogruby.rb CHANGED
@@ -133,7 +133,7 @@ module Typogruby
133
133
  # @return [String] input text with caps wrapped
134
134
  def caps(text)
135
135
  # $1 is an excluded HTML tag, $2 is the part before the caps and $3 is the caps match
136
- text.gsub(/<(code|pre).+?<\/\1>|(\s|&nbsp;|^|'|"|>)([A-Z\d][A-Z\d\.']{1,})(?!\w)/) do |str|
136
+ text.gsub(/<(?i)(code|pre)(?-i).+?<(?i)\/\1(?-i)>|(\s|&nbsp;|^|'|"|>)([A-Z\d][A-Z\d\.']{1,})(?!\w)/) do |str|
137
137
  excluded, before, caps = $1, $2, $3
138
138
  if excluded
139
139
  str
@@ -25,6 +25,7 @@ class TestTypogruby < Test::Unit::TestCase
25
25
  def test_should_ignore_special_case_caps
26
26
  assert_equal 'It should ignore just numbers like 1234', caps('It should ignore just numbers like 1234')
27
27
  assert_equal '<pre>CAPS</pre> more <span class="caps">CAPS</span>', caps("<pre>CAPS</pre> more CAPS")
28
+ assert_equal '<Pre>CAPS</PRE> with odd tag names <span class="caps">CAPS</span>', caps("<Pre>CAPS</PRE> with odd tag names CAPS")
28
29
  assert_equal 'A message from <span class="caps">2KU2</span> with digits', caps("A message from 2KU2 with digits")
29
30
  assert_equal 'Dotted caps followed by spaces should never include them in the wrap <span class="caps">D.O.T.</span> like so.', caps("Dotted caps followed by spaces should never include them in the wrap D.O.T. like so.")
30
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typogruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 2
10
- version: 1.0.2
9
+ - 3
10
+ version: 1.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Arjan van der Gaag
@@ -15,8 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-26 00:00:00 +02:00
19
- default_executable:
18
+ date: 2010-07-27 00:00:00 +02:00
19
+ default_executable: typogruby
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: yard
@@ -48,8 +48,8 @@ dependencies:
48
48
  version_requirements: *id002
49
49
  description: Improve web typography using various text filters. This gem prevents widows and applies markup to ampersans, consecutive capitals and initial quotes.
50
50
  email: arjan@arjanvandergaag.nl
51
- executables: []
52
-
51
+ executables:
52
+ - typogruby
53
53
  extensions: []
54
54
 
55
55
  extra_rdoc_files:
@@ -62,6 +62,7 @@ files:
62
62
  - README.md
63
63
  - Rakefile
64
64
  - VERSION
65
+ - bin/typogruby
65
66
  - lib/typogruby.rb
66
67
  - test/helper.rb
67
68
  - test/test_typogruby.rb