typographic-unit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ -fs --colour
@@ -0,0 +1,10 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ gem 'rspec'
6
+ require 'spec'
7
+ end
8
+
9
+ $LOAD_PATH << File.join(File.dirname(__FILE__), "..", "lib")
10
+ require "typographic-unit"
@@ -0,0 +1,281 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ TypographicUnit.open
4
+
5
+ describe TypographicUnit do
6
+ it "1pt == 65536sp" do
7
+ 1.pt.should == 65536.sp
8
+ 1.pt.should_not == 65535.sp
9
+ 1.pt.should_not == 65537.sp
10
+ end
11
+
12
+ it "1pc == 12pt" do
13
+ 1.pc.should == 12.pt
14
+ end
15
+
16
+ it "1in == 72.27pt" do
17
+ 1.in.should == 72.27.pt
18
+ end
19
+
20
+ it "72bp == 1in" do
21
+ 72.bp.should == 1.in
22
+ end
23
+
24
+ it "10mm == 1cm" do
25
+ 25.4.mm.should == 2.54.cm
26
+ end
27
+
28
+ it "1cm == 10mm" do
29
+ 1.cm.should == 10.mm
30
+ end
31
+
32
+ it "2.54cm == 1in" do
33
+ 2.54.cm.should == 1.in
34
+ end
35
+
36
+ it "1m == 100cm" do
37
+ 1.m.should == 100.cm
38
+ end
39
+
40
+ it "1157dd == 1238pt" do
41
+ 1157.dd.should == 1238.pt
42
+ end
43
+
44
+ it "1cc == 12dd" do
45
+ 1.cc.should == 12.dd
46
+ end
47
+
48
+ it "1.q == 0.25.mm" do
49
+ 1.q.should == 0.25.mm
50
+ end
51
+
52
+ it "1.jis_pt == 0.3514.mm" do
53
+ 1.jis_pt.should == 0.3514.mm
54
+ end
55
+
56
+ it "1.cm - 1.mm == 0.8.cm + 1.mm" do
57
+ (1.cm - 1.mm).should == 0.8.cm + 1.mm
58
+ end
59
+ end
60
+
61
+ describe Numeric do
62
+ it "%" do
63
+ (10.cm % 3.cm).should.kind_of?(TypographicUnit::Centimeter)
64
+ (10.cm % 3.cm).should == 1.cm
65
+ end
66
+
67
+ it "div" do
68
+ (10.cm.div 3.cm).should.kind_of?(Integer)
69
+ (10.cm.div 3.cm).should == 3
70
+ (10.cm.div 3).should == 3
71
+ end
72
+
73
+ it "quo" do
74
+ (10.cm.quo 3.cm).should.kind_of?(Rational)
75
+ (10.cm.quo 3.cm).should == Rational(10, 3)
76
+ (10.cm.quo 3).should == Rational(10, 3)
77
+ end
78
+
79
+ it "+@" do
80
+ (+(1.cm)).should == +(10.mm)
81
+ end
82
+
83
+ it "1.cm + 1.cm == 2.cm" do
84
+ (1.cm + 1.cm).should == 2.cm
85
+ end
86
+
87
+ it "1.cm + 1.mm == 1.1cm" do
88
+ (1.cm + 1.mm).should be_kind_of(TypographicUnit::Centimeter)
89
+ (1.cm + 1.mm).should == 1.1.cm
90
+ end
91
+
92
+ it "-@" do
93
+ (-(1.cm)).should == -(10.mm)
94
+ end
95
+
96
+ it "2.cm - 1.cm == 1.cm" do
97
+ (2.cm - 1.cm).should == 1.cm
98
+ end
99
+
100
+ it "1.cm - 1.mm == 0.9cm" do
101
+ (1.cm - 1.mm).should be_kind_of(TypographicUnit::Centimeter)
102
+ (1.cm - 1.mm).should == 0.9.cm
103
+ end
104
+
105
+ it "*" do
106
+ (1.cm * 10).should be_kind_of(TypographicUnit::Centimeter)
107
+ (1.cm * 10).should == 10.cm
108
+ Proc.new{1.cm * 10.cm}.should raise_error(ArgumentError)
109
+ end
110
+
111
+ it "abs" do
112
+ (-(1.cm)).abs.should == 1.cm
113
+ (-(1.cm)).abs.should_not == -1.cm
114
+ end
115
+
116
+ it "ceil" do
117
+ 1.5.cm.ceil.should == 2.cm
118
+ 1.5.cm.ceil.should_not == 1.cm
119
+ end
120
+
121
+ it "floor" do
122
+ 1.5.cm.floor.should == 1.cm
123
+ 1.5.cm.floor.should_not == 2.cm
124
+ end
125
+
126
+ it "round" do
127
+ 1.4.cm.round.should == 1.cm
128
+ 1.5.cm.round.should == 2.cm
129
+ end
130
+
131
+ it "truncate" do
132
+ 1.4.cm.truncate.should == 1.cm
133
+ 1.5.cm.truncate.should == 1.cm
134
+ end
135
+
136
+ it "integer?" do
137
+ 1.cm.should be_integer
138
+ 1.5.cm.should_not be_integer
139
+ end
140
+
141
+ it "nonzero?" do
142
+ 1.cm.should be_nonzero
143
+ 0.cm.should_not be_nonzero
144
+ end
145
+
146
+ it "to_i" do
147
+ 1.cm.to_i.should be_kind_of(TypographicUnit::Centimeter)
148
+ 1.cm.to_i.should == 1.cm
149
+ 1.4.cm.to_i.should == 1.cm
150
+ 1.5.cm.to_i.should == 1.cm
151
+ end
152
+
153
+ it "to_int" do
154
+ 1.cm.to_int.should be_kind_of(Integer)
155
+ 1.cm.to_int.should == 1
156
+ 1.4.cm.to_int.should == 1
157
+ 1.5.cm.to_int.should == 1
158
+ end
159
+
160
+ it "zero?" do
161
+ 0.cm.should be_zero
162
+ 0.0.cm.should be_zero
163
+ 0.1.cm.should_not be_zero
164
+ end
165
+
166
+ it "step from 1cm to 5cm" do
167
+ list = []
168
+ 1.cm.step(5.cm) do |i|
169
+ list << i
170
+ end
171
+ list.should == [1.cm, 2.cm, 3.cm, 4.cm, 5.cm]
172
+ end
173
+
174
+ it "step from 1cm to 3cm by 0.5cm" do
175
+ list = []
176
+ 1.cm.step(3.cm, 0.5.cm) do |i|
177
+ i.should be_kind_of(TypographicUnit::Centimeter)
178
+ list << i
179
+ end
180
+ list.should == [1.cm, 1.5.cm, 2.cm, 2.5.cm, 3.cm]
181
+ end
182
+
183
+ it "step from 1cm to 3cm by 5mm" do
184
+ list = []
185
+ 1.cm.step(3.cm, 5.mm) do |i|
186
+ i.should be_kind_of(TypographicUnit::Centimeter)
187
+ list << i
188
+ end
189
+ list.should == [1.cm, 1.5.cm, 2.cm, 2.5.cm, 3.cm]
190
+ end
191
+ end
192
+
193
+ describe Range do
194
+ it "Range.new(1.cm, 5.cm) should be valid" do
195
+ Proc.new{1.cm..5.cm}.should_not raise_error(ArgumentError)
196
+ end
197
+
198
+ it "Range.new(1.cm, 1.in) should be valid" do
199
+ Proc.new{1.cm..1.in}.should_not raise_error(ArgumentError)
200
+ end
201
+
202
+ it "#include should work" do
203
+ (1.cm..1.in).should include(25.4.mm)
204
+ (1.cm..1.in).should_not include(25.5.mm)
205
+ end
206
+
207
+ it "#each should raise a TypeError" do
208
+ Proc.new{(1.cm..5.cm).each{}}.should raise_error(TypeError)
209
+ end
210
+
211
+ it "#step" do
212
+ Proc.new{(1.cm..5.cm).step{}}.should raise_error(ArgumentError)
213
+ end
214
+ end
215
+
216
+ describe TypographicUnit::Millimeter do
217
+ it "1mm => 1mm" do
218
+ (1.mm >> :mm).should == 1.mm
219
+ end
220
+
221
+ it "1mm => 0.1cm" do
222
+ (1.mm >> :cm).should be_a_kind_of(TypographicUnit::Centimeter)
223
+ (1.mm >> :cm).should == 0.1.cm
224
+ end
225
+
226
+ it "1mm => 0.001m" do
227
+ (1.mm >> :m).should == 0.001.m
228
+ end
229
+
230
+ it "10mm => 1cm" do
231
+ (10.mm >> :cm).should == 1.cm
232
+ end
233
+
234
+ it "1000mm => 1m" do
235
+ (1000.mm >> :m).should == 1.m
236
+ end
237
+
238
+ it "25.4mm => 1in" do
239
+ (25.4.mm >> :in).should == 1.in
240
+ end
241
+ end
242
+
243
+ describe TypographicUnit::Centimeter do
244
+ it "1cm => 1cm" do
245
+ (1.cm >> :cm).should == 1.cm
246
+ end
247
+
248
+ it "1cm => 10mm" do
249
+ (1.cm >> :mm).should == 10.mm
250
+ end
251
+
252
+ it "1cm => 0.01m" do
253
+ (1.cm >> :m).should == 0.01.m
254
+ end
255
+
256
+ it "2.54cm => 1in" do
257
+ (2.54.cm >> :in).should == 1.in
258
+ end
259
+
260
+ it "254cm => 7227pt" do
261
+ (254.cm >> :pt).should == 7227.pt
262
+ end
263
+ end
264
+
265
+ describe TypographicUnit::Meter do
266
+ it "1m => 1m" do
267
+ (1.m >> :m).should == 1.m
268
+ end
269
+
270
+ it "1m => 1000mm" do
271
+ (1.m >> :mm).should == 1000.mm
272
+ end
273
+
274
+ it "1m => 100cm" do
275
+ (1.m >> :cm).should == 100.cm
276
+ end
277
+
278
+ it "0.0254m => 1in" do
279
+ (0.0254.m >> :in).should == 1.in
280
+ end
281
+ end
@@ -0,0 +1,34 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/*_spec.rb']
21
+ end
@@ -0,0 +1,17 @@
1
+ desc 'Generate website files'
2
+ task :website_generate => :ruby_env do
3
+ (Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
4
+ sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
5
+ end
6
+ end
7
+
8
+ desc 'Upload website files to rubyforge'
9
+ task :website_upload do
10
+ host = "#{rubyforge_username}@rubyforge.org"
11
+ remote_dir = "/var/www/gforge-projects/#{PATH}/"
12
+ local_dir = 'website'
13
+ sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
14
+ end
15
+
16
+ desc 'Generate and upload website files'
17
+ task :website => [:website_generate, :website_upload, :publish_docs]
@@ -0,0 +1,170 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ TypographicUnit
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>TypographicUnit</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/typographicunit"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/typographicunit" class="numbers">0.1.0</a>
37
+ </div>
38
+ <h2>What</h2>
39
+
40
+
41
+ <p>TypographicUnit is a library for converting between typographic units according
42
+ to TeX. This library can handle the following units:</p>
43
+
44
+
45
+ <ul>
46
+ <li>TeX Scaled Point(sp)</li>
47
+ <li>TeX Point(pt)</li>
48
+ <li>Pica(pt)</li>
49
+ <li>Inch(in)</li>
50
+ <li>TeX Big Point(bp)</li>
51
+ <li>PostScript Point(ps_pt)</li>
52
+ <li>Meter(m)</li>
53
+ <li>Centimeter(cm)</li>
54
+ <li>Milimeter(mm)</li>
55
+ <li>Didot Point(dd)</li>
56
+ <li>Cicero(cc)</li>
57
+ <li>Japanese Q(q)</li>
58
+ <li><span class="caps">JIS</span> Point(jis_pt)</li>
59
+ </ul>
60
+
61
+
62
+ <h2>Installing</h2>
63
+
64
+
65
+ <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">typographicunit</span></pre></p>
66
+
67
+
68
+ <h2>The basics</h2>
69
+
70
+
71
+ <p><pre class='syntax'>
72
+ <span class="ident">require</span> <span class="punct">&quot;</span><span class="string">typographic-unit</span><span class="punct">&quot;</span>
73
+
74
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="comment"># =&gt; #&lt;1cm&gt;</span>
75
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">-</span> <span class="number">1</span><span class="punct">.</span><span class="ident">mm</span> <span class="comment"># =&gt; #&lt;0.9cm&gt;</span>
76
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">==</span> <span class="number">10</span><span class="punct">.</span><span class="ident">mm</span> <span class="comment"># =&gt; true</span>
77
+
78
+ <span class="number">1</span><span class="punct">.</span><span class="ident">in</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:cm</span> <span class="comment"># =&gt; #&lt;2.54cm&gt;</span>
79
+ <span class="number">2.54</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:in</span> <span class="comment"># =&gt; #&lt;1.0in&gt;</span>
80
+ <span class="number">1</span><span class="punct">.</span><span class="ident">in</span> <span class="punct">-</span> <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="comment"># =&gt; #&lt;0.606299212598425in&gt;</span>
81
+ <span class="punct">(</span><span class="number">1</span><span class="punct">.</span><span class="ident">in</span> <span class="punct">-</span> <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span><span class="punct">)</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:cm</span> <span class="comment"># =&gt; #&lt;1.54cm&gt;</span>
82
+ </pre></p>
83
+
84
+
85
+ <h2>Demonstration of usage</h2>
86
+
87
+
88
+ <h3>Convert</h3>
89
+
90
+
91
+ <p><pre class='syntax'>
92
+ <span class="number">1</span><span class="punct">.</span><span class="ident">pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:mm</span> <span class="comment"># =&gt; #&lt;0.351459803514598mm&gt;</span>
93
+ <span class="number">7227</span><span class="punct">.</span><span class="ident">pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:cm</span> <span class="comment"># =&gt; #&lt;254.0cm&gt;</span>
94
+ <span class="number">1</span><span class="punct">.</span><span class="ident">in</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:bp</span> <span class="comment"># =&gt; #&lt;72.0bp&gt;</span>
95
+ <span class="number">1</span><span class="punct">.</span><span class="ident">pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:sp</span> <span class="comment"># =&gt; #&lt;65536.0sp&gt;</span>
96
+ <span class="number">1157</span><span class="punct">.</span><span class="ident">pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:pt</span> <span class="comment"># =&gt; #&lt;1238.0pt&gt;</span>
97
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cc</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:dd</span> <span class="comment"># =&gt; #&lt;12.0dd&gt;</span>
98
+ <span class="number">10</span><span class="punct">.</span><span class="ident">q</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:mm</span> <span class="comment"># =&gt; #&lt;2.5mm&gt;</span>
99
+ <span class="number">1</span><span class="punct">.</span><span class="ident">jis_pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:mm</span> <span class="comment"># =&gt; #&lt;0.3514mm&gt;</span>
100
+ </pre></p>
101
+
102
+
103
+ <h3>Calculate</h3>
104
+
105
+
106
+ <p><pre class='syntax'>
107
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">+</span> <span class="number">1</span><span class="punct">.</span><span class="ident">mm</span> <span class="comment"># =&gt; #&lt;1.1cm&gt;</span>
108
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">+</span> <span class="number">1</span><span class="punct">.</span><span class="ident">in</span> <span class="comment"># =&gt; #&lt;3.54cm&gt;</span>
109
+ <span class="number">1</span><span class="punct">.</span><span class="ident">pt</span> <span class="punct">-</span> <span class="number">1</span><span class="punct">.</span><span class="ident">bp</span> <span class="comment"># =&gt; #&lt;-0.00131797426317971mm&gt;</span>
110
+ <span class="number">100</span><span class="punct">.</span><span class="ident">ps_pt</span> <span class="punct">-</span> <span class="number">100</span><span class="punct">.</span><span class="ident">jis_pt</span> <span class="punct">&gt;&gt;</span> <span class="symbol">:mm</span> <span class="comment"># =&gt; #&lt;0.137777777777779mm&gt;</span>
111
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span> <span class="punct">*</span> <span class="number">10</span> <span class="comment"># =&gt; #&lt;10cm&gt;</span>
112
+ </pre></p>
113
+
114
+
115
+ <h3>Step</h3>
116
+
117
+
118
+ <p><pre class='syntax'>
119
+ <span class="ident">list</span> <span class="punct">=</span> <span class="punct">[]</span>
120
+ <span class="number">1</span><span class="punct">.</span><span class="ident">cm</span><span class="punct">.</span><span class="ident">step</span><span class="punct">(</span><span class="number">3</span><span class="punct">.</span><span class="ident">cm</span><span class="punct">,</span> <span class="number">0.5</span><span class="punct">.</span><span class="ident">cm</span><span class="punct">)</span> <span class="keyword">do</span> <span class="punct">|</span><span class="ident">i</span><span class="punct">|</span>
121
+ <span class="ident">list</span> <span class="punct">&lt;&lt;</span> <span class="ident">i</span>
122
+ <span class="keyword">end</span>
123
+ <span class="ident">list</span> <span class="comment"># =&gt; [1.cm, 1.5.cm, 2.cm, 2.5.cm, 3.cm]</span>
124
+ </pre></p>
125
+
126
+
127
+ <h2>Forum</h2>
128
+
129
+
130
+ <p><a href="http://groups.google.com/group/ruby-typographic-unit">http://groups.google.com/group/ruby-typographic-unit</a></p>
131
+
132
+
133
+ <h2>How to submit patches</h2>
134
+
135
+
136
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
137
+
138
+
139
+ <p>The trunk repository is <code>svn://rubyforge.org/var/svn/typographicunit/trunk</code> for anonymous access.</p>
140
+
141
+
142
+ <h2>License</h2>
143
+
144
+
145
+ <p>This code is free to use under the terms of the Ruby license.</p>
146
+
147
+
148
+ <h2>Contact</h2>
149
+
150
+
151
+ <p>Comments are welcome. Send an email to <a href="mailto:keita.yamaguchi@gmail.com">Keita Yamaguchi</a> via the <a href="http://groups.google.com/group/ruby-typographic-unit">forum</a></p>
152
+
153
+
154
+ <h2>Links</h2>
155
+
156
+
157
+ <ul>
158
+ <li><a href="http://typographicunit.rubyforge.org/">Project Home</a></li>
159
+ <li><a href="http://rubyforge.org/projects/typographicunit/">RubyForge/TypographicUnit</a></li>
160
+ </ul>
161
+ <p class="coda">
162
+ <a href="keita.yamaguchi@gmail.com">Keita Yamaguchi</a>, 19th December 2007<br>
163
+ Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
164
+ </p>
165
+ </div>
166
+
167
+ <!-- insert site tracking codes here, like Google Urchin -->
168
+
169
+ </body>
170
+ </html>
data/website/index.txt ADDED
@@ -0,0 +1,97 @@
1
+ h1. TypographicUnit
2
+
3
+ h2. What
4
+
5
+ TypographicUnit is a library for converting between typographic units according
6
+ to TeX. This library can handle the following units:
7
+
8
+ * TeX Scaled Point(sp)
9
+ * TeX Point(pt)
10
+ * Pica(pt)
11
+ * Inch(in)
12
+ * TeX Big Point(bp)
13
+ * PostScript Point(ps_pt)
14
+ * Meter(m)
15
+ * Centimeter(cm)
16
+ * Milimeter(mm)
17
+ * Didot Point(dd)
18
+ * Cicero(cc)
19
+ * Japanese Q(q)
20
+ * JIS Point(jis_pt)
21
+
22
+ h2. Installing
23
+
24
+ <pre syntax="ruby">sudo gem install typographicunit</pre>
25
+
26
+ h2. The basics
27
+
28
+ <pre syntax="ruby">
29
+ require "typographic-unit"
30
+
31
+ 1.cm # => #<1cm>
32
+ 1.cm - 1.mm # => #<0.9cm>
33
+ 1.cm == 10.mm # => true
34
+
35
+ 1.in >> :cm # => #<2.54cm>
36
+ 2.54.cm >> :in # => #<1.0in>
37
+ 1.in - 1.cm # => #<0.606299212598425in>
38
+ (1.in - 1.cm) >> :cm # => #<1.54cm>
39
+ </pre>
40
+
41
+ h2. Demonstration of usage
42
+
43
+ h3. Convert
44
+
45
+ <pre syntax="ruby">
46
+ 1.pt >> :mm # => #<0.351459803514598mm>
47
+ 7227.pt >> :cm # => #<254.0cm>
48
+ 1.in >> :bp # => #<72.0bp>
49
+ 1.pt >> :sp # => #<65536.0sp>
50
+ 1157.pt >> :pt # => #<1238.0pt>
51
+ 1.cc >> :dd # => #<12.0dd>
52
+ 10.q >> :mm # => #<2.5mm>
53
+ 1.jis_pt >> :mm # => #<0.3514mm>
54
+ </pre>
55
+
56
+ h3. Calculate
57
+
58
+ <pre syntax="ruby">
59
+ 1.cm + 1.mm # => #<1.1cm>
60
+ 1.cm + 1.in # => #<3.54cm>
61
+ 1.pt - 1.bp # => #<-0.00131797426317971mm>
62
+ 100.ps_pt - 100.jis_pt >> :mm # => #<0.137777777777779mm>
63
+ 1.cm * 10 # => #<10cm>
64
+ </pre>
65
+
66
+ h3. Step
67
+
68
+ <pre syntax="ruby">
69
+ list = []
70
+ 1.cm.step(3.cm, 0.5.cm) do |i|
71
+ list << i
72
+ end
73
+ list # => [1.cm, 1.5.cm, 2.cm, 2.5.cm, 3.cm]
74
+ </pre>
75
+
76
+ h2. Forum
77
+
78
+ "http://groups.google.com/group/ruby-typographic-unit":http://groups.google.com/group/ruby-typographic-unit
79
+
80
+ h2. How to submit patches
81
+
82
+ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
83
+
84
+ The trunk repository is <code>svn://rubyforge.org/var/svn/typographicunit/trunk</code> for anonymous access.
85
+
86
+ h2. License
87
+
88
+ This code is free to use under the terms of the Ruby license.
89
+
90
+ h2. Contact
91
+
92
+ Comments are welcome. Send an email to "Keita Yamaguchi":mailto:keita.yamaguchi@gmail.com via the "forum":http://groups.google.com/group/ruby-typographic-unit
93
+
94
+ h2. Links
95
+
96
+ * "Project Home":http://typographicunit.rubyforge.org/
97
+ * "RubyForge/TypographicUnit":http://rubyforge.org/projects/typographicunit/