rtypeset 0.1.0 → 0.1.1

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: b8ea4e5bc767657e85cce15701a16bd5d7509758
4
- data.tar.gz: a5fb8f89579eeb8343354e42a75ef533e77a7c2d
3
+ metadata.gz: 6c6a2fbd26527d3299578780c904e7912d54b5d8
4
+ data.tar.gz: 88cabe98ef680e1fd514cb5e31355036f243ea0e
5
5
  SHA512:
6
- metadata.gz: d6c17fb385f25ec901ba85fa1f713f34ccf15ca6b9ce366d6a89355f4e2f1932984c18a8a49214f142582c77c8b94f33b16aca6430e332ca61de892acc01b81b
7
- data.tar.gz: eee4219f33268dc297a300ed3040eb185ad463376b97be164f9e510d8bbb122b2d4e567a2e800da2192edc1ed1b9d49bf7ea89d959c04d0e913ad84faaccfd05
6
+ metadata.gz: 4502d70a2721ca59b1a30ce00fdb1f149188cbde94db7161fd3ff3ea3823bcaa990dd3052d5242c6b9373ad6dc9461422f1b78c15653b2c94031cbb4decacd0e
7
+ data.tar.gz: f94bf56385b52360b2307235b6f5beb789014dc05c01ae12d70a6b463263b08a64c4ab76e708a47e1b4f8c9e0d0bc0ba8dc2dd4ae684daf82ff22f99df4a7ff8
data/.travis.yml CHANGED
@@ -3,3 +3,6 @@ rvm:
3
3
  - 2.1.2
4
4
  - 2.1.0
5
5
  - 2.1.5
6
+ addons:
7
+ code_climate:
8
+ repo_token: 4b280ed6ddcce4c38b7daa1cdf99ce3c49c858f6c7beb7d41fa99938e47b140e
data/Gemfile CHANGED
@@ -15,3 +15,7 @@ group :development do
15
15
  gem "jeweler", "~> 2.0.1"
16
16
  gem "simplecov", ">= 0"
17
17
  end
18
+
19
+ group :test do
20
+ gem "codeclimate-test-reporter"
21
+ end
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
1
  # An HTML pre-processor for web typography
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/rtypeset.svg)](http://badge.fury.io/rb/rtypeset)
3
4
  [![Build Status](https://travis-ci.org/doches/rtypeset.png)](https://travis-ci.org/doches/rtypeset)
4
- [![Documentation Status](https://inch-ci.org/github/doches/rtypeset.svg?branch=master)](https://inch-ci.org/github/doches/rtypeset)
5
+ [![Documentation Status](https://inch-ci.org/github/doches/rtypeset.svg)](https://inch-ci.org/github/doches/rtypeset)
6
+ [![Code Climate](https://codeclimate.com/github/doches/rtypeset/badges/gpa.svg)](https://codeclimate.com/github/doches/rtypeset)
7
+ [![Test Coverage](https://codeclimate.com/github/doches/rtypeset/badges/coverage.svg)](https://codeclimate.com/github/doches/rtypeset/coverage)
5
8
 
6
9
  a pure Ruby typographic pre-processor for HTML inspired by [Typeset.js](https://github.com/davidmerfield/Typeset) that gives you:
7
10
 
@@ -32,11 +35,22 @@ HTML:
32
35
  # Output beautifully-formatted HTML
33
36
  puts Typeset.typeset(raw_html)
34
37
 
35
- Want more control over your typesetting? You can selectively disable Typeset features by passing
36
- in an options hash to `#typeset`:
38
+ ### Customisation
39
+
40
+ Want more control over your typesetting?
41
+
42
+ #### Disabling Features
43
+
44
+ You can selectively disable Typeset features by passing in an options hash to `#typeset`:
37
45
 
38
46
  # Disable hyphenation and small caps conversion.
39
47
  options = {:disable => [:hyphenate, :small-caps]}
40
48
  Typeset.typeset(raw_html, options)
41
49
 
42
- The full list of disablable modules is: `:quotes`, `:hanging_punctuation`, `:spaces`, `:small_caps`, `:hyphenate`, `:ligatures` and `:punctuation`.
50
+ The full list of modules is: `:quotes`, `:hanging_punctuation`, `:spaces`, `:small_caps`, `:hyphenate`, `:ligatures` and `:punctuation`.
51
+
52
+ #### Hyphenation Language
53
+
54
+ If you're using hyphenation (it's on by default!) you may want to specify the language (the default is `en_us`):
55
+
56
+ Typeset.typeset(raw_html, {:language => "en_us"})
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/lib/typeset.rb CHANGED
@@ -29,20 +29,28 @@ module Typeset
29
29
  return content.join("")
30
30
  end
31
31
 
32
+ # The default typesetting methods and their configuration. Add new methods here
33
+ # in whatever order makes sense.
34
+ DefaultMethods = [
35
+ [:quotes, true],
36
+ [:hanging_punctuation, true],
37
+ [:spaces, true],
38
+ [:small_caps, true],
39
+ [:ligatures, false],
40
+ [:punctuation, false],
41
+ [:hyphenate, true]
42
+ ]
43
+
44
+ DefaultOptions = {
45
+ :disable => [],
46
+ :language => "en_us"
47
+ }
48
+
32
49
  # The main entry point for Typeset. Pass in raw HTML or text, along with an
33
50
  # optional options block.
34
- def self.typeset(html, options={})
35
- methods = [
36
- [:quotes, true],
37
- [:hanging_punctuation, true],
38
- [:spaces, true],
39
- [:small_caps, true],
40
- [:hyphenate, true],
41
- [:ligatures, false],
42
- [:punctuation, false]
43
- ]
44
-
45
- options[:disable] ||= []
51
+ def self.typeset(html, options=Typeset::DefaultOptions)
52
+ methods = Typeset::DefaultMethods.dup
53
+ options[:disable] ||= DefaultOptions[:disable]
46
54
  methods.reject! { |method| options[:disable].include?(method[0]) }
47
55
 
48
56
  methods.each do |func, use_text_nodes|
@@ -30,30 +30,16 @@ module Typeset
30
30
  aligns = "CcOoYTAVvWwY".split('')
31
31
  words = text.split(/\s+/)
32
32
  words.each_with_index do |word, i|
33
- aligns.each do |align|
34
- if word[0] == align
35
- words[i] = "#{HangingPunctuation.pull(align, align)}#{word.slice(1,word.length)}"
36
-
37
- if not words[i-1].nil?
38
- words[i-1] = "#{words[i-1]}#{HangingPunctuation.push(align)}"
39
- end
40
- end
41
- end
42
- HangingPunctuation::SingleWidth.each do |punctuation|
43
- if word[0] == punctuation
44
- words[i] = "#{HangingPunctuation.pull('single', punctuation)}#{word.slice(1,word.length)}"
45
-
46
- if not words[i-1].nil?
47
- words[i-1] = "#{words[i-1]}#{HangingPunctuation.push('single')}"
48
- end
49
- end
50
- end
51
- HangingPunctuation::DoubleWidth.each do |punctuation|
52
- if word[0] == punctuation
53
- words[i] = "#{HangingPunctuation.pull('double', punctuation)}#{word.slice(1,word.length)}"
54
-
55
- if not words[i-1].nil?
56
- words[i-1] = "#{words[i-1]}#{HangingPunctuation.push('double')}"
33
+ [[aligns, false],
34
+ [HangingPunctuation::SingleWidth, 'single'],
35
+ [HangingPunctuation::DoubleWidth, 'double']].each do |pair|
36
+ pair[0].each do |signal|
37
+ if word[0] == signal
38
+ words[i] = "#{HangingPunctuation.pull(pair[1], signal)}#{word.slice(1,word.length)}"
39
+
40
+ if not words[i-1].nil?
41
+ words[i-1] = "#{words[i-1]}#{HangingPunctuation.push(pair[1] ? pair[1] : signal)}"
42
+ end
57
43
  end
58
44
  end
59
45
  end
@@ -7,7 +7,7 @@ module Typeset
7
7
  # Typeset.typeset("do hyphenation on this", {:language => "en_gb"})
8
8
  def self.hyphenate(text, options)
9
9
  options[:language] ||= 'en_us'
10
- hyphen = Text::Hyphen.new(:language => options[:language])
10
+ hyphen = Text::Hyphen.new(:language => options[:language], :left => 0, :right => 0)
11
11
 
12
12
  text = hyphen.visualise(text, "\u00AD")
13
13
 
data/rtypeset.gemspec ADDED
@@ -0,0 +1,84 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: rtypeset 0.1.1 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "rtypeset"
9
+ s.version = "0.1.1"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Trevor Fountain"]
14
+ s.date = "2015-08-20"
15
+ s.description = "A pure Ruby implementation of Typeset.js, an HTML pre-processor for web typography"
16
+ s.email = "trevor@texasexpat.net"
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.md"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".travis.yml",
24
+ "Gemfile",
25
+ "LICENSE.txt",
26
+ "README.md",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "demo/demo.rb",
30
+ "demo/raw.html",
31
+ "demo/style.css",
32
+ "demo/typeset.css",
33
+ "index.html",
34
+ "lib/typeset.rb",
35
+ "lib/typeset/hanging_punctuation.rb",
36
+ "lib/typeset/hyphenate.rb",
37
+ "lib/typeset/ligatures.rb",
38
+ "lib/typeset/punctuation.rb",
39
+ "lib/typeset/quotes.rb",
40
+ "lib/typeset/small_caps.rb",
41
+ "lib/typeset/spaces.rb",
42
+ "rtypeset.gemspec",
43
+ "test/helper.rb",
44
+ "test/test_typeset.rb"
45
+ ]
46
+ s.homepage = "http://github.com/doches/rtypeset"
47
+ s.licenses = ["MIT"]
48
+ s.rubygems_version = "2.4.7"
49
+ s.summary = "An HTML pre-processor for web typography"
50
+
51
+ if s.respond_to? :specification_version then
52
+ s.specification_version = 4
53
+
54
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
+ s.add_runtime_dependency(%q<text-hyphen>, ["~> 1.4"])
56
+ s.add_runtime_dependency(%q<nokogiri>, [">= 1.6"])
57
+ s.add_development_dependency(%q<minitest>, [">= 5.8.0"])
58
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
60
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
61
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
62
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
63
+ else
64
+ s.add_dependency(%q<text-hyphen>, ["~> 1.4"])
65
+ s.add_dependency(%q<nokogiri>, [">= 1.6"])
66
+ s.add_dependency(%q<minitest>, [">= 5.8.0"])
67
+ s.add_dependency(%q<shoulda>, [">= 0"])
68
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
69
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
70
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
71
+ s.add_dependency(%q<simplecov>, [">= 0"])
72
+ end
73
+ else
74
+ s.add_dependency(%q<text-hyphen>, ["~> 1.4"])
75
+ s.add_dependency(%q<nokogiri>, [">= 1.6"])
76
+ s.add_dependency(%q<minitest>, [">= 5.8.0"])
77
+ s.add_dependency(%q<shoulda>, [">= 0"])
78
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
79
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
80
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
81
+ s.add_dependency(%q<simplecov>, [">= 0"])
82
+ end
83
+ end
84
+
data/test/helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
1
3
  require 'simplecov'
2
4
 
3
5
  module SimpleCov::Configuration
data/test/test_typeset.rb CHANGED
@@ -9,7 +9,7 @@ class TestTypeset < Minitest::Test
9
9
  end
10
10
 
11
11
  def test_quotes
12
- assert_equal "“foo”", Typeset.typeset("\"foo\"", {:disable => [:hanging_punctuation]})
12
+ assert_equal "“foo”", Typeset.typeset("\"foo\"", {:disable => [:hanging_punctuation, :hyphenate]})
13
13
  assert_equal "19′ 43.5″", Typeset.typeset("19\' 43.5\"")
14
14
  end
15
15
 
@@ -28,7 +28,7 @@ class TestTypeset < Minitest::Test
28
28
  end
29
29
 
30
30
  def test_small_caps
31
- assert_equal "an <span class=\"small-caps\">FBI</span> agent", Typeset.typeset("an FBI agent")
31
+ assert_equal "an <span class=\"small-caps\">FBI</span> agent", Typeset.typeset("an FBI agent", OptNoHyphenate)
32
32
  assert_equal "The <span class=\"small-caps\">CIA</span>", Typeset.typeset("The CIA", {:disable => [:hanging_punctuation, :hyphenate]})
33
33
  assert_equal "<span class=\"small-caps\">NCSA</span>", Typeset.typeset("NCSA", OptNoHyphenate)
34
34
  assert_equal "<span class=\"small-caps\">NCSA</span> Mosaic", Typeset.typeset("NCSA Mosaic", OptNoHyphenate)
@@ -54,6 +54,6 @@ class TestTypeset < Minitest::Test
54
54
  end
55
55
 
56
56
  def test_hyphenate
57
- assert_equal "do hy\u00ADphen\u00ADation", Typeset.typeset("do hyphenation")
57
+ assert_equal "do hy\u00ADphen\u00ADation", Typeset.typeset("do hyphenation", Typeset::DefaultOptions)
58
58
  end
59
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtypeset
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trevor Fountain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-18 00:00:00.000000000 Z
11
+ date: 2015-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: text-hyphen
@@ -151,6 +151,7 @@ files:
151
151
  - lib/typeset/quotes.rb
152
152
  - lib/typeset/small_caps.rb
153
153
  - lib/typeset/spaces.rb
154
+ - rtypeset.gemspec
154
155
  - test/helper.rb
155
156
  - test/test_typeset.rb
156
157
  homepage: http://github.com/doches/rtypeset