surpass 0.0.4 → 0.0.6
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.
- data/History.txt +4 -0
- data/README.txt +3 -20
- data/Rakefile +2 -13
- data/bin/surpass +8 -0
- data/examples/big-16mb.rb +25 -0
- data/examples/big-random-strings.rb +28 -0
- data/examples/blanks.rb +34 -0
- data/examples/blanks.xls +0 -0
- data/examples/col_width.rb +16 -0
- data/examples/col_width.xls +0 -0
- data/examples/dates.rb +31 -0
- data/examples/dates.xls +0 -0
- data/examples/format.rb +23 -0
- data/examples/format.xls +0 -0
- data/examples/hello-world.rb +9 -0
- data/examples/hello-world.xls +0 -0
- data/examples/image.rb +10 -0
- data/examples/image.xls +0 -0
- data/examples/merged.rb +36 -0
- data/examples/merged.xls +0 -0
- data/examples/merged0.rb +27 -0
- data/examples/merged0.xls +0 -0
- data/examples/merged1.rb +99 -0
- data/examples/merged1.xls +0 -0
- data/examples/num_formats.rb +55 -0
- data/examples/num_formats.xls +0 -0
- data/examples/numbers.rb +24 -0
- data/examples/numbers.xls +0 -0
- data/examples/outline.rb +110 -0
- data/examples/outline.xls +0 -0
- data/examples/panes.rb +48 -0
- data/examples/panes.xls +0 -0
- data/examples/protection.rb +132 -0
- data/examples/protection.xls +0 -0
- data/examples/python.bmp +0 -0
- data/examples/row_styles.rb +16 -0
- data/examples/row_styles.xls +0 -0
- data/examples/row_styles_empty.rb +15 -0
- data/examples/row_styles_empty.xls +0 -0
- data/examples/set_cell_and_range_style.rb +12 -0
- data/examples/set_cell_and_range_style.xls +0 -0
- data/examples/wrapped-text.rb +13 -0
- data/examples/wrapped-text.xls +0 -0
- data/examples/write_arrays.rb +22 -0
- data/examples/write_arrays.xls +0 -0
- data/examples/ws_props.rb +80 -0
- data/lib/surpass/ExcelFormula.g +366 -0
- data/lib/surpass/ExcelFormula.tokens +30 -0
- data/lib/surpass/ExcelFormulaLexer.rb +922 -0
- data/lib/surpass/ExcelFormulaParser.rb +602 -0
- data/lib/{biff_record.rb → surpass/biff_record.rb} +0 -0
- data/lib/{bitmap.rb → surpass/bitmap.rb} +0 -0
- data/lib/{cell.rb → surpass/cell.rb} +2 -34
- data/lib/{chart.rb → surpass/chart.rb} +0 -0
- data/lib/{column.rb → surpass/column.rb} +0 -0
- data/lib/{document.rb → surpass/document.rb} +0 -0
- data/lib/surpass/excel_formula.rb +23 -0
- data/lib/{excel_magic.rb → surpass/excel_magic.rb} +0 -0
- data/lib/{formatting.rb → surpass/formatting.rb} +93 -53
- data/lib/{row.rb → surpass/row.rb} +0 -0
- data/lib/{style.rb → surpass/style.rb} +2 -1
- data/lib/surpass/tokens.txt +2 -0
- data/lib/{utilities.rb → surpass/utilities.rb} +0 -0
- data/lib/{workbook.rb → surpass/workbook.rb} +0 -0
- data/lib/{worksheet.rb → surpass/worksheet.rb} +15 -6
- data/lib/surpass.rb +1 -1
- data/spec/biff_record_spec.rb +268 -0
- data/spec/cell_spec.rb +56 -0
- data/spec/data/random-strings.txt +10000 -0
- data/spec/document_spec.rb +168 -0
- data/spec/excel_formula_spec.rb +27 -0
- data/spec/formatting_spec.rb +53 -0
- data/spec/output/cells-rk.xls +0 -0
- data/spec/output/cells.xls +0 -0
- data/spec/output/mini.xls +0 -0
- data/spec/reference/P-0508-0000507647-3280-5298.xls +0 -0
- data/spec/reference/all-cell-styles.bin +0 -0
- data/spec/reference/all-number-formats.bin +0 -0
- data/spec/reference/all-styles.bin +0 -0
- data/spec/reference/mini.xls +0 -0
- data/spec/row_spec.rb +19 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/style_spec.rb +89 -0
- data/spec/surpass_spec.rb +7 -0
- data/spec/utilities_spec.rb +57 -0
- data/spec/workbook_spec.rb +48 -0
- data/spec/worksheet_spec.rb +0 -0
- data/stats/cloc.txt +8 -0
- data/stats/rcov.txt +0 -0
- data/stats/specdoc.txt +158 -0
- data/surpass.gemspec +40 -0
- data/tasks/setup.rb +1 -1
- data/tasks/zentest.rake +36 -0
- data/webby/README.txt +6 -0
- data/webby/Sitefile +43 -0
- data/webby/content/css/pygments.txt +6 -0
- data/webby/content/css/style.css +279 -0
- data/webby/content/examples/autoformat.png +0 -0
- data/webby/content/examples/autoformat.rb +32 -0
- data/webby/content/examples/autoformat.xls +0 -0
- data/webby/content/examples/borders.png +0 -0
- data/webby/content/examples/borders.rb +15 -0
- data/webby/content/examples/borders.xls +0 -0
- data/webby/content/examples/colours.png +0 -0
- data/webby/content/examples/colours.rb +23 -0
- data/webby/content/examples/colours.xls +0 -0
- data/webby/content/examples/data.png +0 -0
- data/webby/content/examples/data.rb +11 -0
- data/webby/content/examples/data.xls +0 -0
- data/webby/content/examples/formatting.png +0 -0
- data/webby/content/examples/formatting.rb +78 -0
- data/webby/content/examples/formatting.xls +0 -0
- data/webby/content/examples/hello-world.png +0 -0
- data/webby/content/examples/hello-world.py +8 -0
- data/webby/content/examples/hello-world.rb +9 -0
- data/webby/content/examples/hello-world.xls +0 -0
- data/webby/content/examples/number-format-string.png +0 -0
- data/webby/content/examples/number-format-string.rb +14 -0
- data/webby/content/examples/number-format-string.xls +0 -0
- data/webby/content/examples/patterns.png +0 -0
- data/webby/content/examples/patterns.rb +26 -0
- data/webby/content/examples/patterns.xls +0 -0
- data/webby/content/examples/show-greens.sh +1 -0
- data/webby/content/examples/surpass-info.sh +1 -0
- data/webby/content/img/Thumbs.db +0 -0
- data/webby/content/img/bg_menu.gif +0 -0
- data/webby/content/img/bg_t.gif +0 -0
- data/webby/content/img/bullet.gif +0 -0
- data/webby/content/img/logo.png +0 -0
- data/webby/content/img/logo_.jpg +0 -0
- data/webby/content/img/top_bg.gif +0 -0
- data/webby/content/img/top_bg_.gif +0 -0
- data/webby/content/index.txt +16 -0
- data/webby/content/installation/index.txt +24 -0
- data/webby/content/source/ExcelFormulaLexer.txt +7 -0
- data/webby/content/source/ExcelFormulaParser.txt +7 -0
- data/webby/content/source/biff_record.txt +7 -0
- data/webby/content/source/bitmap.txt +7 -0
- data/webby/content/source/cell.txt +7 -0
- data/webby/content/source/chart.txt +7 -0
- data/webby/content/source/column.txt +7 -0
- data/webby/content/source/document.txt +7 -0
- data/webby/content/source/excel_formula.txt +7 -0
- data/webby/content/source/excel_magic.txt +7 -0
- data/webby/content/source/formatting.txt +7 -0
- data/webby/content/source/row.txt +7 -0
- data/webby/content/source/style.txt +7 -0
- data/webby/content/source/utilities.txt +7 -0
- data/webby/content/source/workbook.txt +7 -0
- data/webby/content/source/worksheet.txt +7 -0
- data/webby/content/surpass-manual.erb +198 -0
- data/webby/layouts/book.txt +29 -0
- data/webby/layouts/default.txt +27 -0
- data/webby/layouts/two_column.txt +25 -0
- data/webby/layouts/web.txt +66 -0
- data/webby/output/.cairn +0 -0
- data/webby/output/css/blueprint/ie.css +26 -0
- data/webby/output/css/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/webby/output/css/blueprint/plugins/buttons/icons/key.png +0 -0
- data/webby/output/css/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/webby/output/css/blueprint/plugins/buttons/readme.txt +32 -0
- data/webby/output/css/blueprint/plugins/buttons/screen.css +97 -0
- data/webby/output/css/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/webby/output/css/blueprint/plugins/fancy-type/screen.css +71 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/webby/output/css/blueprint/plugins/link-icons/readme.txt +18 -0
- data/webby/output/css/blueprint/plugins/link-icons/screen.css +40 -0
- data/webby/output/css/blueprint/plugins/rtl/readme.txt +10 -0
- data/webby/output/css/blueprint/plugins/rtl/screen.css +109 -0
- data/webby/output/css/blueprint/print.css +30 -0
- data/webby/output/css/blueprint/screen.css +251 -0
- data/webby/output/css/blueprint/src/forms.css +49 -0
- data/webby/output/css/blueprint/src/grid.css +212 -0
- data/webby/output/css/blueprint/src/grid.png +0 -0
- data/webby/output/css/blueprint/src/ie.css +59 -0
- data/webby/output/css/blueprint/src/print.css +85 -0
- data/webby/output/css/blueprint/src/reset.css +38 -0
- data/webby/output/css/blueprint/src/typography.css +105 -0
- data/webby/output/css/pygments.css +59 -0
- data/webby/output/css/site.css +62 -0
- data/webby/output/css/style.css +279 -0
- data/webby/output/examples/autoformat.png +0 -0
- data/webby/output/examples/autoformat.rb +32 -0
- data/webby/output/examples/autoformat.xls +0 -0
- data/webby/output/examples/borders.png +0 -0
- data/webby/output/examples/borders.rb +15 -0
- data/webby/output/examples/borders.xls +0 -0
- data/webby/output/examples/colours.png +0 -0
- data/webby/output/examples/colours.rb +23 -0
- data/webby/output/examples/colours.xls +0 -0
- data/webby/output/examples/data.png +0 -0
- data/webby/output/examples/data.rb +11 -0
- data/webby/output/examples/data.xls +0 -0
- data/webby/output/examples/formatting.png +0 -0
- data/webby/output/examples/formatting.rb +78 -0
- data/webby/output/examples/formatting.xls +0 -0
- data/webby/output/examples/hello-world.png +0 -0
- data/webby/output/examples/hello-world.py +8 -0
- data/webby/output/examples/hello-world.rb +9 -0
- data/webby/output/examples/hello-world.xls +0 -0
- data/webby/output/examples/number-format-string.png +0 -0
- data/webby/output/examples/number-format-string.rb +14 -0
- data/webby/output/examples/number-format-string.xls +0 -0
- data/webby/output/examples/patterns.png +0 -0
- data/webby/output/examples/patterns.rb +26 -0
- data/webby/output/examples/patterns.xls +0 -0
- data/webby/output/examples/show-greens.sh +1 -0
- data/webby/output/examples/surpass-info.sh +1 -0
- data/webby/output/img/Thumbs.db +0 -0
- data/webby/output/img/bg_menu.gif +0 -0
- data/webby/output/img/bg_t.gif +0 -0
- data/webby/output/img/bullet.gif +0 -0
- data/webby/output/img/logo.png +0 -0
- data/webby/output/img/logo_.jpg +0 -0
- data/webby/output/img/top_bg.gif +0 -0
- data/webby/output/img/top_bg_.gif +0 -0
- data/webby/output/index.html +138 -0
- data/webby/output/installation/index.html +64 -0
- data/webby/output/installation/installation.html +1 -0
- data/webby/output/installation.html +1 -0
- data/webby/output/source/ExcelFormulaLexer.html +981 -0
- data/webby/output/source/ExcelFormulaParser.html +661 -0
- data/webby/output/source/biff_record.html +462 -0
- data/webby/output/source/bitmap.html +277 -0
- data/webby/output/source/cell.html +241 -0
- data/webby/output/source/chart.html +64 -0
- data/webby/output/source/column.html +99 -0
- data/webby/output/source/document.html +465 -0
- data/webby/output/source/excel_formula.html +82 -0
- data/webby/output/source/excel_magic.html +1072 -0
- data/webby/output/source/formatting.html +664 -0
- data/webby/output/source/row.html +169 -0
- data/webby/output/source/style.html +158 -0
- data/webby/output/source/surpass.html +110 -0
- data/webby/output/source/utilities.html +145 -0
- data/webby/output/source/workbook.html +265 -0
- data/webby/output/source/worksheet.html +331 -0
- data/webby/output/surpass-manual-0-0-5.pdf +0 -0
- data/webby/output/surpass-manual.aux +50 -0
- data/webby/output/surpass-manual.log +366 -0
- data/webby/output/surpass-manual.out +20 -0
- data/webby/output/surpass-manual.tex +582 -0
- data/webby/output/surpass-manual.toc +20 -0
- data/webby/rsync-exclude +7 -0
- data/webby/tasks/latex.rake +14 -0
- data/webby/tasks/screenshots.rb +58 -0
- data/webby/templates/article.erb +15 -0
- data/webby/templates/book.erb +16 -0
- data/webby/templates/page.erb +9 -0
- metadata +302 -24
- data/bin/surpass-info +0 -20
- data/lib/excel_formula.rb +0 -6
@@ -0,0 +1,664 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
+
|
3
|
+
<!-- ========================================================== -->
|
4
|
+
<!-- Created by Devit Schizoper -->
|
5
|
+
<!-- Created HomePages http://LoadFoo.starzonewebhost.com -->
|
6
|
+
<!-- Created Day 01.12.2006 -->
|
7
|
+
<!-- ========================================================== -->
|
8
|
+
|
9
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
10
|
+
<head>
|
11
|
+
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
12
|
+
<meta name="author" content="LoadFoO" />
|
13
|
+
<meta name="description" content="Site description" />
|
14
|
+
<meta name="keywords" content="key, words" />
|
15
|
+
<title>Surpass :: formatting.rb</title>
|
16
|
+
<link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
|
17
|
+
<link rel="stylesheet" href="/css/pygments.css" type="text/css" />
|
18
|
+
<link rel="shortcut icon" href="favicon.ico" />
|
19
|
+
</head>
|
20
|
+
|
21
|
+
<body>
|
22
|
+
<div id="wrap">
|
23
|
+
<div id="top">
|
24
|
+
<h2><a href="/" title="Back to main page">Surpass</a></h2>
|
25
|
+
<div id="menu">
|
26
|
+
<ul>
|
27
|
+
<li><a href="/installation">Installation</a></li>
|
28
|
+
<li><a href="/examples">Examples</a></li>
|
29
|
+
<li><a href="/source">Source</a></li>
|
30
|
+
</ul>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
<div id="content">
|
34
|
+
<div id="left">
|
35
|
+
<h2>formatting.rb</h2>
|
36
|
+
<div class="highlight"><pre><span class="k">module</span> <span class="nn">Formatting</span>
|
37
|
+
<span class="no">COLOURS</span> <span class="o">=</span> <span class="p">{</span>
|
38
|
+
<span class="s1">'aqua'</span> <span class="o">=></span> <span class="mh">0x31</span><span class="p">,</span>
|
39
|
+
<span class="s1">'black'</span> <span class="o">=></span> <span class="mh">0x08</span><span class="p">,</span>
|
40
|
+
<span class="s1">'blue'</span> <span class="o">=></span> <span class="mh">0x0C</span><span class="p">,</span>
|
41
|
+
<span class="s1">'blue-grey'</span> <span class="o">=></span> <span class="mh">0x36</span><span class="p">,</span>
|
42
|
+
<span class="s1">'bright-green'</span> <span class="o">=></span> <span class="mh">0xb</span><span class="p">,</span>
|
43
|
+
<span class="s1">'brown'</span> <span class="o">=></span> <span class="mh">0x3c</span><span class="p">,</span>
|
44
|
+
<span class="s1">'coral'</span> <span class="o">=></span> <span class="mh">0x1d</span><span class="p">,</span>
|
45
|
+
<span class="s1">'cornflower-blue'</span> <span class="o">=></span> <span class="mh">0x18</span><span class="p">,</span>
|
46
|
+
<span class="s1">'dark-blue'</span> <span class="o">=></span> <span class="mh">0x12</span><span class="p">,</span>
|
47
|
+
<span class="s1">'dark-green'</span> <span class="o">=></span> <span class="mh">0x3a</span><span class="p">,</span>
|
48
|
+
<span class="s1">'dark-red'</span> <span class="o">=></span> <span class="mh">0x10</span><span class="p">,</span>
|
49
|
+
<span class="s1">'dark-teal'</span> <span class="o">=></span> <span class="mh">0x38</span><span class="p">,</span>
|
50
|
+
<span class="s1">'dark-yellow'</span> <span class="o">=></span> <span class="mh">0x13</span><span class="p">,</span>
|
51
|
+
<span class="s1">'fuchsia'</span> <span class="o">=></span> <span class="mh">0x0E</span><span class="p">,</span>
|
52
|
+
<span class="s1">'gold'</span> <span class="o">=></span> <span class="mh">0x33</span><span class="p">,</span>
|
53
|
+
<span class="s1">'gray'</span> <span class="o">=></span> <span class="mh">0x17</span><span class="p">,</span>
|
54
|
+
<span class="s1">'grey'</span> <span class="o">=></span> <span class="mh">0x17</span><span class="p">,</span>
|
55
|
+
<span class="s1">'green'</span> <span class="o">=></span> <span class="mh">0x11</span><span class="p">,</span>
|
56
|
+
<span class="s1">'grey-25-percent'</span> <span class="o">=></span> <span class="mh">0x16</span><span class="p">,</span>
|
57
|
+
<span class="s1">'grey-40-percent'</span> <span class="o">=></span> <span class="mh">0x37</span><span class="p">,</span>
|
58
|
+
<span class="s1">'grey-50-percent'</span> <span class="o">=></span> <span class="mh">0x17</span><span class="p">,</span>
|
59
|
+
<span class="s1">'grey-80-percent'</span> <span class="o">=></span> <span class="mh">0x3f</span><span class="p">,</span>
|
60
|
+
<span class="s1">'indigo'</span> <span class="o">=></span> <span class="mh">0x3e</span><span class="p">,</span>
|
61
|
+
<span class="s1">'lavender'</span> <span class="o">=></span> <span class="mh">0x2e</span><span class="p">,</span>
|
62
|
+
<span class="s1">'lemon-chiffon'</span> <span class="o">=></span> <span class="mh">0x1a</span><span class="p">,</span>
|
63
|
+
<span class="s1">'light-blue'</span> <span class="o">=></span> <span class="mh">0x30</span><span class="p">,</span>
|
64
|
+
<span class="s1">'light-cornflower-blue'</span> <span class="o">=></span> <span class="mh">0x1f</span><span class="p">,</span>
|
65
|
+
<span class="s1">'light-green'</span> <span class="o">=></span> <span class="mh">0x2a</span><span class="p">,</span>
|
66
|
+
<span class="s1">'light-orange'</span> <span class="o">=></span> <span class="mh">0x34</span><span class="p">,</span>
|
67
|
+
<span class="s1">'light-turquoise'</span> <span class="o">=></span> <span class="mh">0x29</span><span class="p">,</span>
|
68
|
+
<span class="s1">'light-yellow'</span> <span class="o">=></span> <span class="mh">0x2b</span><span class="p">,</span>
|
69
|
+
<span class="s1">'lime'</span> <span class="o">=></span> <span class="mh">0x32</span><span class="p">,</span>
|
70
|
+
<span class="s1">'magenta'</span> <span class="o">=></span> <span class="mh">0x0E</span><span class="p">,</span>
|
71
|
+
<span class="s1">'maroon'</span> <span class="o">=></span> <span class="mh">0x19</span><span class="p">,</span>
|
72
|
+
<span class="s1">'olive-green'</span> <span class="o">=></span> <span class="mh">0x3b</span><span class="p">,</span>
|
73
|
+
<span class="s1">'orange'</span> <span class="o">=></span> <span class="mh">0x35</span><span class="p">,</span>
|
74
|
+
<span class="s1">'orchid'</span> <span class="o">=></span> <span class="mh">0x1c</span><span class="p">,</span>
|
75
|
+
<span class="s1">'pale-blue'</span> <span class="o">=></span> <span class="mh">0x2c</span><span class="p">,</span>
|
76
|
+
<span class="s1">'pink'</span> <span class="o">=></span> <span class="mh">0x21</span><span class="p">,</span>
|
77
|
+
<span class="s1">'plum'</span> <span class="o">=></span> <span class="mh">0x3d</span><span class="p">,</span>
|
78
|
+
<span class="s1">'purple'</span> <span class="o">=></span> <span class="mh">0x14</span><span class="p">,</span>
|
79
|
+
<span class="s1">'red'</span> <span class="o">=></span> <span class="mh">0x0A</span><span class="p">,</span>
|
80
|
+
<span class="s1">'rose'</span> <span class="o">=></span> <span class="mh">0x2d</span><span class="p">,</span>
|
81
|
+
<span class="s1">'royal-blue'</span> <span class="o">=></span> <span class="mh">0x1e</span><span class="p">,</span>
|
82
|
+
<span class="s1">'sea-green'</span> <span class="o">=></span> <span class="mh">0x39</span><span class="p">,</span>
|
83
|
+
<span class="s1">'silver'</span> <span class="o">=></span> <span class="mh">0x16</span><span class="p">,</span>
|
84
|
+
<span class="s1">'sky-blue'</span> <span class="o">=></span> <span class="mh">0x28</span><span class="p">,</span>
|
85
|
+
<span class="s1">'tan'</span> <span class="o">=></span> <span class="mh">0x2f</span><span class="p">,</span>
|
86
|
+
<span class="s1">'teal'</span> <span class="o">=></span> <span class="mh">0x15</span><span class="p">,</span>
|
87
|
+
<span class="s1">'turquoise'</span> <span class="o">=></span> <span class="mh">0xf</span><span class="p">,</span>
|
88
|
+
<span class="s1">'violet'</span> <span class="o">=></span> <span class="mh">0x14</span><span class="p">,</span>
|
89
|
+
<span class="s1">'white'</span> <span class="o">=></span> <span class="mh">0x09</span><span class="p">,</span>
|
90
|
+
<span class="s1">'yellow'</span> <span class="o">=></span> <span class="mh">0x0D</span>
|
91
|
+
<span class="p">}</span>
|
92
|
+
|
93
|
+
<span class="no">COLORS</span> <span class="o">=</span> <span class="no">COLOURS</span>
|
94
|
+
<span class="k">end</span>
|
95
|
+
|
96
|
+
<span class="k">class</span> <span class="nc">Font</span>
|
97
|
+
<span class="no">ESCAPEMENT_NONE</span> <span class="o">=</span> <span class="mh">0x00</span>
|
98
|
+
<span class="no">ESCAPEMENT_SUPERSCRIPT</span> <span class="o">=</span> <span class="mh">0x01</span>
|
99
|
+
<span class="no">ESCAPEMENT_SUBSCRIPT</span> <span class="o">=</span> <span class="mh">0x02</span>
|
100
|
+
|
101
|
+
<span class="no">UNDERLINE_NONE</span> <span class="o">=</span> <span class="mh">0x00</span>
|
102
|
+
<span class="no">UNDERLINE_SINGLE</span> <span class="o">=</span> <span class="mh">0x01</span>
|
103
|
+
<span class="no">UNDERLINE_SINGLE_ACC</span> <span class="o">=</span> <span class="mh">0x21</span>
|
104
|
+
<span class="no">UNDERLINE_DOUBLE</span> <span class="o">=</span> <span class="mh">0x02</span>
|
105
|
+
<span class="no">UNDERLINE_DOUBLE_ACC</span> <span class="o">=</span> <span class="mh">0x22</span>
|
106
|
+
|
107
|
+
<span class="no">FAMILY_NONE</span> <span class="o">=</span> <span class="mh">0x00</span>
|
108
|
+
<span class="no">FAMILY_ROMAN</span> <span class="o">=</span> <span class="mh">0x01</span>
|
109
|
+
<span class="no">FAMILY_SWISS</span> <span class="o">=</span> <span class="mh">0x02</span>
|
110
|
+
<span class="no">FAMILY_MODERN</span> <span class="o">=</span> <span class="mh">0x03</span>
|
111
|
+
<span class="no">FAMILY_SCRIPT</span> <span class="o">=</span> <span class="mh">0x04</span>
|
112
|
+
<span class="no">FAMILY_DECORATIVE</span> <span class="o">=</span> <span class="mh">0x05</span>
|
113
|
+
|
114
|
+
<span class="no">CHARSET_ANSI_LATIN</span> <span class="o">=</span> <span class="mh">0x00</span>
|
115
|
+
<span class="no">CHARSET_SYS_DEFAULT</span> <span class="o">=</span> <span class="mh">0x01</span>
|
116
|
+
<span class="no">CHARSET_SYMBOL</span> <span class="o">=</span> <span class="mh">0x02</span>
|
117
|
+
<span class="no">CHARSET_APPLE_ROMAN</span> <span class="o">=</span> <span class="mh">0x4D</span>
|
118
|
+
<span class="no">CHARSET_ANSI_JAP_SHIFT_JIS</span> <span class="o">=</span> <span class="mh">0x80</span>
|
119
|
+
<span class="no">CHARSET_ANSI_KOR_HANGUL</span> <span class="o">=</span> <span class="mh">0x81</span>
|
120
|
+
<span class="no">CHARSET_ANSI_KOR_JOHAB</span> <span class="o">=</span> <span class="mh">0x82</span>
|
121
|
+
<span class="no">CHARSET_ANSI_CHINESE_GBK</span> <span class="o">=</span> <span class="mh">0x86</span>
|
122
|
+
<span class="no">CHARSET_ANSI_CHINESE_BIG5</span> <span class="o">=</span> <span class="mh">0x88</span>
|
123
|
+
<span class="no">CHARSET_ANSI_GREEK</span> <span class="o">=</span> <span class="mh">0xA1</span>
|
124
|
+
<span class="no">CHARSET_ANSI_TURKISH</span> <span class="o">=</span> <span class="mh">0xA2</span>
|
125
|
+
<span class="no">CHARSET_ANSI_VIETNAMESE</span> <span class="o">=</span> <span class="mh">0xA3</span>
|
126
|
+
<span class="no">CHARSET_ANSI_HEBREW</span> <span class="o">=</span> <span class="mh">0xB1</span>
|
127
|
+
<span class="no">CHARSET_ANSI_ARABIC</span> <span class="o">=</span> <span class="mh">0xB2</span>
|
128
|
+
<span class="no">CHARSET_ANSI_BALTIC</span> <span class="o">=</span> <span class="mh">0xBA</span>
|
129
|
+
<span class="no">CHARSET_ANSI_CYRILLIC</span> <span class="o">=</span> <span class="mh">0xCC</span>
|
130
|
+
<span class="no">CHARSET_ANSI_THAI</span> <span class="o">=</span> <span class="mh">0xDE</span>
|
131
|
+
<span class="no">CHARSET_ANSI_LATIN_II</span> <span class="o">=</span> <span class="mh">0xEE</span>
|
132
|
+
<span class="no">CHARSET_OEM_LATIN_I</span> <span class="o">=</span> <span class="mh">0xFF</span>
|
133
|
+
|
134
|
+
<span class="no">PLAIN</span> <span class="o">=</span> <span class="mh">0x00</span>
|
135
|
+
<span class="no">BOLD</span> <span class="o">=</span> <span class="mh">0x01</span>
|
136
|
+
<span class="no">ITALIC</span> <span class="o">=</span> <span class="mh">0x02</span>
|
137
|
+
<span class="no">UNDERLINE</span> <span class="o">=</span> <span class="mh">0x04</span>
|
138
|
+
<span class="no">STRUCK_OUT</span> <span class="o">=</span> <span class="mh">0x08</span>
|
139
|
+
<span class="no">OUTLINE</span> <span class="o">=</span> <span class="mh">0x010</span>
|
140
|
+
<span class="no">SHADOW</span> <span class="o">=</span> <span class="mh">0x020</span>
|
141
|
+
|
142
|
+
<span class="kp">attr_accessor</span> <span class="ss">:height</span>
|
143
|
+
<span class="kp">attr_accessor</span> <span class="ss">:italic</span>
|
144
|
+
<span class="kp">attr_accessor</span> <span class="ss">:struck_out</span>
|
145
|
+
<span class="kp">attr_accessor</span> <span class="ss">:outline</span>
|
146
|
+
<span class="kp">attr_accessor</span> <span class="ss">:shadow</span>
|
147
|
+
<span class="kp">attr_accessor</span> <span class="ss">:colour_index</span>
|
148
|
+
<span class="kp">attr_accessor</span> <span class="ss">:bold</span>
|
149
|
+
<span class="kp">attr_accessor</span> <span class="ss">:weight</span> <span class="c1"># Looks like only 400 = normal, 700 = bold are supported so just use bold = true.</span>
|
150
|
+
<span class="kp">attr_accessor</span> <span class="ss">:escapement</span>
|
151
|
+
<span class="kp">attr_accessor</span> <span class="ss">:charset</span>
|
152
|
+
<span class="kp">attr_accessor</span> <span class="ss">:name</span>
|
153
|
+
|
154
|
+
<span class="kp">attr_reader</span> <span class="ss">:family</span>
|
155
|
+
<span class="kp">attr_reader</span> <span class="ss">:underline</span>
|
156
|
+
|
157
|
+
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="nb">hash</span> <span class="o">=</span> <span class="p">{})</span>
|
158
|
+
<span class="vi">@height</span> <span class="o">=</span> <span class="mi">200</span> <span class="c1"># font size 10</span>
|
159
|
+
<span class="vi">@italic</span> <span class="o">=</span> <span class="kp">false</span>
|
160
|
+
<span class="vi">@struck_out</span> <span class="o">=</span> <span class="kp">false</span>
|
161
|
+
<span class="vi">@outline</span> <span class="o">=</span> <span class="kp">false</span>
|
162
|
+
<span class="vi">@shadow</span> <span class="o">=</span> <span class="kp">false</span>
|
163
|
+
<span class="vi">@colour_index</span> <span class="o">=</span> <span class="mh">0x7FFF</span>
|
164
|
+
<span class="vi">@bold</span> <span class="o">=</span> <span class="kp">false</span>
|
165
|
+
<span class="vi">@weight</span> <span class="o">=</span> <span class="mi">400</span> <span class="c1"># regular</span>
|
166
|
+
<span class="vi">@escapement</span> <span class="o">=</span> <span class="no">ESCAPEMENT_NONE</span>
|
167
|
+
<span class="vi">@charset</span> <span class="o">=</span> <span class="no">CHARSET_SYS_DEFAULT</span>
|
168
|
+
<span class="vi">@name</span> <span class="o">=</span> <span class="s1">'Arial'</span>
|
169
|
+
<span class="vi">@family</span> <span class="o">=</span> <span class="no">FAMILY_NONE</span>
|
170
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_NONE</span>
|
171
|
+
|
172
|
+
<span class="nb">hash</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span>
|
173
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">send</span><span class="p">((</span><span class="n">k</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s1">'='</span><span class="p">)</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
|
174
|
+
<span class="k">end</span>
|
175
|
+
<span class="k">end</span>
|
176
|
+
|
177
|
+
<span class="k">def</span> <span class="nf">family</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
178
|
+
<span class="k">raise</span> <span class="s2">"Oops, font_family doesn't take a string. Do you want font_name instead?"</span> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">is_a?</span><span class="p">(</span><span class="nb">String</span><span class="p">)</span>
|
179
|
+
<span class="vi">@family</span> <span class="o">=</span> <span class="n">arg</span>
|
180
|
+
<span class="k">end</span>
|
181
|
+
|
182
|
+
<span class="c1"># Convert font size in points to native twips</span>
|
183
|
+
<span class="k">def</span> <span class="nf">size</span><span class="o">=</span><span class="p">(</span><span class="n">points</span><span class="p">)</span>
|
184
|
+
<span class="vi">@height</span> <span class="o">=</span> <span class="n">points</span> <span class="o">*</span> <span class="mi">20</span>
|
185
|
+
<span class="k">end</span>
|
186
|
+
|
187
|
+
<span class="k">def</span> <span class="nf">strikethrough</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
188
|
+
<span class="vi">@struck_out</span> <span class="o">=</span> <span class="n">arg</span>
|
189
|
+
<span class="k">end</span>
|
190
|
+
|
191
|
+
<span class="k">def</span> <span class="nf">subscript</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
192
|
+
<span class="k">case</span> <span class="n">arg</span>
|
193
|
+
<span class="k">when</span> <span class="no">TrueClass</span>
|
194
|
+
<span class="vi">@escapement</span> <span class="o">=</span> <span class="no">ESCAPEMENT_SUBSCRIPT</span>
|
195
|
+
<span class="k">when</span> <span class="no">FalseClass</span>
|
196
|
+
<span class="vi">@escapement</span> <span class="o">=</span> <span class="no">ESCAPEMENT_NONE</span>
|
197
|
+
<span class="k">else</span>
|
198
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to set subscript to </span><span class="si">#{</span><span class="n">arg</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
199
|
+
<span class="k">end</span>
|
200
|
+
<span class="k">end</span>
|
201
|
+
|
202
|
+
<span class="k">def</span> <span class="nf">superscript</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
203
|
+
<span class="k">case</span> <span class="n">arg</span>
|
204
|
+
<span class="k">when</span> <span class="no">TrueClass</span>
|
205
|
+
<span class="vi">@escapement</span> <span class="o">=</span> <span class="no">ESCAPEMENT_SUPERSCRIPT</span>
|
206
|
+
<span class="k">when</span> <span class="no">FalseClass</span>
|
207
|
+
<span class="vi">@escapement</span> <span class="o">=</span> <span class="no">ESCAPEMENT_NONE</span>
|
208
|
+
<span class="k">else</span>
|
209
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to set superscript to </span><span class="si">#{</span><span class="n">arg</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
210
|
+
<span class="k">end</span>
|
211
|
+
<span class="k">end</span>
|
212
|
+
|
213
|
+
<span class="c1"># User-friendly underlining directives.</span>
|
214
|
+
<span class="k">def</span> <span class="nf">underline</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
215
|
+
<span class="k">case</span> <span class="n">arg</span>
|
216
|
+
<span class="k">when</span> <span class="no">UNDERLINE_NONE</span><span class="p">,</span> <span class="no">UNDERLINE_SINGLE</span><span class="p">,</span> <span class="no">UNDERLINE_SINGLE_ACC</span><span class="p">,</span> <span class="no">UNDERLINE_DOUBLE</span><span class="p">,</span> <span class="no">UNDERLINE_DOUBLE_ACC</span>
|
217
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="n">arg</span>
|
218
|
+
<span class="k">when</span> <span class="kp">nil</span>
|
219
|
+
<span class="vi">@underline</span> <span class="o">||=</span> <span class="no">UNDERLINE_NONE</span>
|
220
|
+
<span class="k">when</span> <span class="no">TrueClass</span>
|
221
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_SINGLE</span>
|
222
|
+
<span class="k">when</span> <span class="no">FalseClass</span>
|
223
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_NONE</span>
|
224
|
+
<span class="k">when</span> <span class="ss">:none</span>
|
225
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_NONE</span>
|
226
|
+
<span class="k">when</span> <span class="ss">:single</span>
|
227
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_SINGLE</span>
|
228
|
+
<span class="k">when</span> <span class="ss">:single_acc</span><span class="p">,</span> <span class="ss">:single_accounting</span>
|
229
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_SINGLE_ACC</span>
|
230
|
+
<span class="k">when</span> <span class="ss">:double</span>
|
231
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_DOUBLE</span>
|
232
|
+
<span class="k">when</span> <span class="ss">:double_acc</span><span class="p">,</span> <span class="ss">:double_accounting</span>
|
233
|
+
<span class="vi">@underline</span> <span class="o">=</span> <span class="no">UNDERLINE_DOUBLE_ACC</span>
|
234
|
+
<span class="k">else</span>
|
235
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to set underline to </span><span class="si">#{</span><span class="n">arg</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
236
|
+
<span class="k">end</span>
|
237
|
+
<span class="k">end</span>
|
238
|
+
|
239
|
+
<span class="k">def</span> <span class="nf">colour_index_from_name</span><span class="p">(</span><span class="n">colour_name</span><span class="p">)</span>
|
240
|
+
<span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">[</span><span class="n">colour_name</span><span class="o">.</span><span class="n">to_s</span><span class="o">]</span>
|
241
|
+
<span class="k">end</span>
|
242
|
+
|
243
|
+
<span class="k">def</span> <span class="nf">colour</span><span class="o">=</span><span class="p">(</span><span class="n">colour_name</span><span class="p">)</span>
|
244
|
+
<span class="n">new_colour</span> <span class="o">=</span> <span class="n">colour_index_from_name</span><span class="p">(</span><span class="n">colour_name</span><span class="p">)</span>
|
245
|
+
<span class="k">if</span> <span class="n">new_colour</span><span class="o">.</span><span class="n">nil?</span>
|
246
|
+
<span class="k">raise</span> <span class="s2">"Invalid Colour </span><span class="si">#{</span><span class="n">colour_name</span><span class="si">}</span><span class="s2">"</span>
|
247
|
+
<span class="k">else</span>
|
248
|
+
<span class="vi">@colour_index</span> <span class="o">=</span> <span class="n">new_colour</span>
|
249
|
+
<span class="k">end</span>
|
250
|
+
<span class="k">end</span>
|
251
|
+
<span class="k">alias</span> <span class="ss">:color</span><span class="o">=</span> <span class="ss">:colour</span><span class="o">=</span>
|
252
|
+
<span class="k">alias</span> <span class="ss">:color_index</span><span class="o">=</span> <span class="ss">:colour_index</span><span class="o">=</span>
|
253
|
+
|
254
|
+
<span class="k">def</span> <span class="nf">to_biff</span>
|
255
|
+
<span class="n">options</span> <span class="o">=</span> <span class="no">PLAIN</span>
|
256
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">BOLD</span> <span class="k">if</span> <span class="vi">@bold</span>
|
257
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">ITALIC</span> <span class="k">if</span> <span class="vi">@italic</span>
|
258
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">UNDERLINE</span> <span class="k">if</span> <span class="p">(</span><span class="vi">@underline</span> <span class="o">!=</span> <span class="no">UNDERLINE_NONE</span><span class="p">)</span>
|
259
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">STRUCK_OUT</span> <span class="k">if</span> <span class="vi">@struck_out</span>
|
260
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">OUTLINE</span> <span class="k">if</span> <span class="vi">@outline</span>
|
261
|
+
<span class="n">options</span> <span class="o">|=</span> <span class="no">SHADOW</span> <span class="k">if</span> <span class="vi">@shadow</span>
|
262
|
+
|
263
|
+
<span class="vi">@weight</span> <span class="o">=</span> <span class="mi">700</span> <span class="k">if</span> <span class="vi">@bold</span>
|
264
|
+
<span class="n">args</span> <span class="o">=</span> <span class="o">[</span><span class="vi">@height</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="vi">@colour_index</span><span class="p">,</span> <span class="vi">@weight</span><span class="p">,</span> <span class="vi">@escapement</span><span class="p">,</span> <span class="vi">@underline</span><span class="p">,</span> <span class="vi">@family</span><span class="p">,</span> <span class="vi">@charset</span><span class="p">,</span> <span class="vi">@name</span><span class="o">]</span>
|
265
|
+
<span class="no">FontRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
|
266
|
+
<span class="k">end</span>
|
267
|
+
<span class="k">end</span>
|
268
|
+
|
269
|
+
<span class="k">class</span> <span class="nc">Alignment</span>
|
270
|
+
<span class="no">HORZ_GENERAL</span> <span class="o">=</span> <span class="mh">0x00</span>
|
271
|
+
<span class="no">HORZ_LEFT</span> <span class="o">=</span> <span class="mh">0x01</span>
|
272
|
+
<span class="no">HORZ_CENTER</span> <span class="o">=</span> <span class="mh">0x02</span>
|
273
|
+
<span class="no">HORZ_RIGHT</span> <span class="o">=</span> <span class="mh">0x03</span>
|
274
|
+
<span class="no">HORZ_FILLED</span> <span class="o">=</span> <span class="mh">0x04</span>
|
275
|
+
<span class="no">HORZ_JUSTIFIED</span> <span class="o">=</span> <span class="mh">0x05</span> <span class="c1"># BIFF4-BIFF8X</span>
|
276
|
+
<span class="no">HORZ_CENTER_ACROSS_SEL</span> <span class="o">=</span> <span class="mh">0x06</span> <span class="c1"># Centred across selection (BIFF4-BIFF8X)</span>
|
277
|
+
<span class="no">HORZ_DISTRIBUTED</span> <span class="o">=</span> <span class="mh">0x07</span> <span class="c1"># Distributed (BIFF8X)</span>
|
278
|
+
|
279
|
+
<span class="no">VERT_TOP</span> <span class="o">=</span> <span class="mh">0x00</span>
|
280
|
+
<span class="no">VERT_CENTER</span> <span class="o">=</span> <span class="mh">0x01</span>
|
281
|
+
<span class="no">VERT_BOTTOM</span> <span class="o">=</span> <span class="mh">0x02</span>
|
282
|
+
<span class="no">VERT_JUSTIFIED</span> <span class="o">=</span> <span class="mh">0x03</span> <span class="c1"># Justified (BIFF5-BIFF8X)</span>
|
283
|
+
<span class="no">VERT_DISTRIBUTED</span> <span class="o">=</span> <span class="mh">0x04</span> <span class="c1"># Distributed (BIFF8X)</span>
|
284
|
+
|
285
|
+
<span class="no">DIRECTION_GENERAL</span> <span class="o">=</span> <span class="mh">0x00</span> <span class="c1"># BIFF8X</span>
|
286
|
+
<span class="no">DIRECTION_LR</span> <span class="o">=</span> <span class="mh">0x01</span>
|
287
|
+
<span class="no">DIRECTION_RL</span> <span class="o">=</span> <span class="mh">0x02</span>
|
288
|
+
|
289
|
+
<span class="no">ORIENTATION_NOT_ROTATED</span> <span class="o">=</span> <span class="mh">0x00</span>
|
290
|
+
<span class="no">ORIENTATION_STACKED</span> <span class="o">=</span> <span class="mh">0x01</span>
|
291
|
+
<span class="no">ORIENTATION_90_CC</span> <span class="o">=</span> <span class="mh">0x02</span>
|
292
|
+
<span class="no">ORIENTATION_90_CW</span> <span class="o">=</span> <span class="mh">0x03</span>
|
293
|
+
|
294
|
+
<span class="no">ROTATION_0_ANGLE</span> <span class="o">=</span> <span class="mh">0x00</span>
|
295
|
+
<span class="no">ROTATION_STACKED</span> <span class="o">=</span> <span class="mh">0xFF</span>
|
296
|
+
|
297
|
+
<span class="no">WRAP_AT_RIGHT</span> <span class="o">=</span> <span class="mh">0x01</span>
|
298
|
+
<span class="no">NOT_WRAP_AT_RIGHT</span> <span class="o">=</span> <span class="mh">0x00</span>
|
299
|
+
|
300
|
+
<span class="no">SHRINK_TO_FIT</span> <span class="o">=</span> <span class="mh">0x01</span>
|
301
|
+
<span class="no">NOT_SHRINK_TO_FIT</span> <span class="o">=</span> <span class="mh">0x00</span>
|
302
|
+
|
303
|
+
<span class="kp">attr_accessor</span> <span class="ss">:horz</span>
|
304
|
+
<span class="kp">attr_accessor</span> <span class="ss">:vert</span>
|
305
|
+
<span class="kp">attr_accessor</span> <span class="ss">:dire</span>
|
306
|
+
<span class="kp">attr_accessor</span> <span class="ss">:orie</span>
|
307
|
+
<span class="kp">attr_accessor</span> <span class="ss">:rota</span>
|
308
|
+
<span class="kp">attr_accessor</span> <span class="ss">:shri</span>
|
309
|
+
<span class="kp">attr_accessor</span> <span class="ss">:inde</span>
|
310
|
+
<span class="kp">attr_accessor</span> <span class="ss">:merg</span>
|
311
|
+
|
312
|
+
<span class="kp">attr_reader</span> <span class="ss">:wrap</span>
|
313
|
+
|
314
|
+
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="nb">hash</span> <span class="o">=</span> <span class="p">{})</span>
|
315
|
+
<span class="c1"># Initialize to defaults.</span>
|
316
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_GENERAL</span>
|
317
|
+
<span class="vi">@vert</span> <span class="o">=</span> <span class="no">VERT_BOTTOM</span>
|
318
|
+
<span class="vi">@wrap</span> <span class="o">=</span> <span class="no">NOT_WRAP_AT_RIGHT</span>
|
319
|
+
<span class="vi">@dire</span> <span class="o">=</span> <span class="no">DIRECTION_GENERAL</span>
|
320
|
+
<span class="vi">@orie</span> <span class="o">=</span> <span class="no">ORIENTATION_NOT_ROTATED</span>
|
321
|
+
<span class="vi">@rota</span> <span class="o">=</span> <span class="no">ROTATION_0_ANGLE</span>
|
322
|
+
<span class="vi">@shri</span> <span class="o">=</span> <span class="no">NOT_SHRINK_TO_FIT</span>
|
323
|
+
<span class="vi">@inde</span> <span class="o">=</span> <span class="mi">0</span>
|
324
|
+
<span class="vi">@merg</span> <span class="o">=</span> <span class="mi">0</span>
|
325
|
+
|
326
|
+
<span class="c1"># Allow defaults to be overridden in hash. Where there is no :align key in hash,</span>
|
327
|
+
<span class="c1"># this just leaves the default value in place.</span>
|
328
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">align</span> <span class="o">=</span> <span class="nb">hash</span><span class="o">[</span><span class="ss">:align</span><span class="o">]</span>
|
329
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">wrap</span> <span class="o">=</span> <span class="nb">hash</span><span class="o">[</span><span class="ss">:wrap</span><span class="o">]</span>
|
330
|
+
<span class="k">end</span>
|
331
|
+
|
332
|
+
<span class="c1"># Don't support passing constants here because :horz and :vert are exposed</span>
|
333
|
+
<span class="c1"># so if someone wants to use nasty HORZ_RIGHT they can do align.vert = HORZ_RIGHT</span>
|
334
|
+
<span class="k">def</span> <span class="nf">align</span><span class="o">=</span><span class="p">(</span><span class="n">alignment_directives</span><span class="p">)</span>
|
335
|
+
<span class="k">if</span> <span class="n">alignment_directives</span> <span class="o">=~</span> <span class="sr">/\s/</span>
|
336
|
+
<span class="n">args</span> <span class="o">=</span> <span class="n">alignment_directives</span><span class="o">.</span><span class="n">split</span>
|
337
|
+
<span class="k">else</span>
|
338
|
+
<span class="n">args</span> <span class="o">=</span> <span class="o">[</span><span class="n">alignment_directives</span><span class="o">]</span> <span class="c1"># there's just 1 here</span>
|
339
|
+
<span class="k">end</span>
|
340
|
+
|
341
|
+
<span class="n">args</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">a</span><span class="o">|</span>
|
342
|
+
<span class="k">case</span> <span class="n">a</span>
|
343
|
+
<span class="k">when</span> <span class="s1">'right'</span>
|
344
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_RIGHT</span>
|
345
|
+
<span class="k">when</span> <span class="s1">'left'</span>
|
346
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_LEFT</span>
|
347
|
+
<span class="k">when</span> <span class="s1">'center'</span><span class="p">,</span> <span class="s1">'centre'</span>
|
348
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_CENTER</span>
|
349
|
+
<span class="k">when</span> <span class="s1">'general'</span>
|
350
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_GENERAL</span>
|
351
|
+
<span class="k">when</span> <span class="s1">'filled'</span>
|
352
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_FILLED</span>
|
353
|
+
<span class="k">when</span> <span class="s1">'justify'</span>
|
354
|
+
<span class="vi">@horz</span> <span class="o">=</span> <span class="no">HORZ_JUSTIFIED</span>
|
355
|
+
<span class="k">when</span> <span class="s1">'top'</span>
|
356
|
+
<span class="vi">@vert</span> <span class="o">=</span> <span class="no">VERT_TOP</span>
|
357
|
+
<span class="k">when</span> <span class="s1">'bottom'</span>
|
358
|
+
<span class="vi">@vert</span> <span class="o">=</span> <span class="no">VERT_BOTTOM</span>
|
359
|
+
<span class="k">when</span> <span class="kp">nil</span>
|
360
|
+
<span class="c1"># Do nothing.</span>
|
361
|
+
<span class="k">else</span>
|
362
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to set align to </span><span class="si">#{</span><span class="n">a</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
363
|
+
<span class="k">end</span>
|
364
|
+
<span class="k">end</span>
|
365
|
+
<span class="k">end</span>
|
366
|
+
|
367
|
+
<span class="k">def</span> <span class="nf">wrap</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
368
|
+
<span class="k">case</span> <span class="n">arg</span>
|
369
|
+
<span class="k">when</span> <span class="no">TrueClass</span><span class="p">,</span> <span class="no">WRAP_AT_RIGHT</span>
|
370
|
+
<span class="vi">@wrap</span> <span class="o">=</span> <span class="no">WRAP_AT_RIGHT</span>
|
371
|
+
<span class="k">when</span> <span class="no">FalseClass</span><span class="p">,</span> <span class="no">NOT_WRAP_AT_RIGHT</span>
|
372
|
+
<span class="vi">@wrap</span> <span class="o">=</span> <span class="no">NOT_WRAP_AT_RIGHT</span>
|
373
|
+
<span class="k">when</span> <span class="kp">nil</span>
|
374
|
+
<span class="c1"># Do nothing.</span>
|
375
|
+
<span class="k">else</span>
|
376
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to set wrap to </span><span class="si">#{</span><span class="n">arg</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
377
|
+
<span class="k">end</span>
|
378
|
+
<span class="k">end</span>
|
379
|
+
<span class="k">end</span>
|
380
|
+
|
381
|
+
<span class="k">class</span> <span class="nc">Borders</span>
|
382
|
+
<span class="kp">attr_reader</span> <span class="ss">:left</span>
|
383
|
+
<span class="kp">attr_reader</span> <span class="ss">:right</span>
|
384
|
+
<span class="kp">attr_reader</span> <span class="ss">:top</span>
|
385
|
+
<span class="kp">attr_reader</span> <span class="ss">:bottom</span>
|
386
|
+
<span class="kp">attr_reader</span> <span class="ss">:diag</span>
|
387
|
+
|
388
|
+
<span class="kp">attr_accessor</span> <span class="ss">:left_colour</span>
|
389
|
+
<span class="kp">attr_accessor</span> <span class="ss">:right_colour</span>
|
390
|
+
<span class="kp">attr_accessor</span> <span class="ss">:top_colour</span>
|
391
|
+
<span class="kp">attr_accessor</span> <span class="ss">:bottom_colour</span>
|
392
|
+
<span class="kp">attr_accessor</span> <span class="ss">:diag_colour</span>
|
393
|
+
|
394
|
+
<span class="kp">attr_accessor</span> <span class="ss">:need_diag1</span>
|
395
|
+
<span class="kp">attr_accessor</span> <span class="ss">:need_diag2</span>
|
396
|
+
|
397
|
+
<span class="no">NO_LINE</span> <span class="o">=</span> <span class="mh">0x00</span>
|
398
|
+
<span class="no">THIN</span> <span class="o">=</span> <span class="mh">0x01</span>
|
399
|
+
<span class="no">MEDIUM</span> <span class="o">=</span> <span class="mh">0x02</span>
|
400
|
+
<span class="no">DASHED</span> <span class="o">=</span> <span class="mh">0x03</span>
|
401
|
+
<span class="no">DOTTED</span> <span class="o">=</span> <span class="mh">0x04</span>
|
402
|
+
<span class="no">THICK</span> <span class="o">=</span> <span class="mh">0x05</span>
|
403
|
+
<span class="no">DOUBLE</span> <span class="o">=</span> <span class="mh">0x06</span>
|
404
|
+
<span class="no">HAIR</span> <span class="o">=</span> <span class="mh">0x07</span>
|
405
|
+
<span class="c1">#The following for BIFF8</span>
|
406
|
+
<span class="no">MEDIUM_DASHED</span> <span class="o">=</span> <span class="mh">0x08</span>
|
407
|
+
<span class="no">THIN_DASH_DOTTED</span> <span class="o">=</span> <span class="mh">0x09</span>
|
408
|
+
<span class="no">MEDIUM_DASH_DOTTED</span> <span class="o">=</span> <span class="mh">0x0A</span>
|
409
|
+
<span class="no">THIN_DASH_DOT_DOTTED</span> <span class="o">=</span> <span class="mh">0x0B</span>
|
410
|
+
<span class="no">MEDIUM_DASH_DOT_DOTTED</span> <span class="o">=</span> <span class="mh">0x0C</span>
|
411
|
+
<span class="no">SLANTED_MEDIUM_DASH_DOTTED</span> <span class="o">=</span> <span class="mh">0x0D</span>
|
412
|
+
|
413
|
+
<span class="no">NEED_DIAG1</span> <span class="o">=</span> <span class="mh">0x01</span>
|
414
|
+
<span class="no">NEED_DIAG2</span> <span class="o">=</span> <span class="mh">0x01</span>
|
415
|
+
<span class="no">NO_NEED_DIAG1</span> <span class="o">=</span> <span class="mh">0x00</span>
|
416
|
+
<span class="no">NO_NEED_DIAG2</span> <span class="o">=</span> <span class="mh">0x00</span>
|
417
|
+
|
418
|
+
<span class="c1"># Want to keep these sorted in this order, so need nested array instead of hash.</span>
|
419
|
+
<span class="no">LINE_TYPE_DIRECTIVES</span> <span class="o">=</span> <span class="o">[</span>
|
420
|
+
<span class="o">[</span><span class="s1">'none'</span><span class="p">,</span> <span class="no">NO_LINE</span><span class="o">]</span><span class="p">,</span>
|
421
|
+
<span class="o">[</span><span class="s1">'thin'</span><span class="p">,</span> <span class="no">THIN</span><span class="o">]</span><span class="p">,</span>
|
422
|
+
<span class="o">[</span><span class="s1">'medium'</span><span class="p">,</span> <span class="no">MEDIUM</span><span class="o">]</span><span class="p">,</span>
|
423
|
+
<span class="o">[</span><span class="s1">'dashed'</span><span class="p">,</span> <span class="no">DASHED</span><span class="o">]</span><span class="p">,</span>
|
424
|
+
<span class="o">[</span><span class="s1">'dotted'</span><span class="p">,</span> <span class="no">DOTTED</span><span class="o">]</span><span class="p">,</span>
|
425
|
+
<span class="o">[</span><span class="s1">'thick'</span><span class="p">,</span> <span class="no">THICK</span><span class="o">]</span><span class="p">,</span>
|
426
|
+
<span class="o">[</span><span class="s1">'double'</span><span class="p">,</span> <span class="no">DOUBLE</span><span class="o">]</span><span class="p">,</span>
|
427
|
+
<span class="o">[</span><span class="s1">'hair'</span><span class="p">,</span> <span class="no">HAIR</span><span class="o">]</span><span class="p">,</span>
|
428
|
+
<span class="o">[</span><span class="s1">'medium-dashed'</span><span class="p">,</span> <span class="no">MEDIUM_DASHED</span><span class="o">]</span><span class="p">,</span>
|
429
|
+
<span class="o">[</span><span class="s1">'thin-dash-dotted'</span><span class="p">,</span> <span class="no">THIN_DASH_DOTTED</span><span class="o">]</span><span class="p">,</span>
|
430
|
+
<span class="o">[</span><span class="s1">'medium-dash-dotted'</span><span class="p">,</span> <span class="no">MEDIUM_DASH_DOTTED</span><span class="o">]</span><span class="p">,</span>
|
431
|
+
<span class="o">[</span><span class="s1">'thin-dash-dot-dotted'</span><span class="p">,</span> <span class="no">THIN_DASH_DOT_DOTTED</span><span class="o">]</span><span class="p">,</span>
|
432
|
+
<span class="o">[</span><span class="s1">'medium-dash-dot-dotted'</span><span class="p">,</span> <span class="no">MEDIUM_DASH_DOT_DOTTED</span><span class="o">]</span><span class="p">,</span>
|
433
|
+
<span class="o">[</span><span class="s1">'slanted-medium-dash-dotted'</span><span class="p">,</span> <span class="no">SLANTED_MEDIUM_DASH_DOTTED</span><span class="o">]</span>
|
434
|
+
<span class="o">]</span>
|
435
|
+
|
436
|
+
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">line_type_directives</span>
|
437
|
+
<span class="no">LINE_TYPE_DIRECTIVES</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span> <span class="n">k</span><span class="p">}</span>
|
438
|
+
<span class="k">end</span>
|
439
|
+
|
440
|
+
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">line_type_constants</span>
|
441
|
+
<span class="no">LINE_TYPE_DIRECTIVES</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span> <span class="n">v</span><span class="p">}</span>
|
442
|
+
<span class="k">end</span>
|
443
|
+
|
444
|
+
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">line_type_directives_hash</span>
|
445
|
+
<span class="no">Hash</span><span class="o">[*</span><span class="no">LINE_TYPE_DIRECTIVES</span><span class="o">.</span><span class="n">flatten</span><span class="o">]</span>
|
446
|
+
<span class="k">end</span>
|
447
|
+
|
448
|
+
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="nb">hash</span> <span class="o">=</span> <span class="p">{})</span>
|
449
|
+
<span class="vi">@left</span> <span class="o">=</span> <span class="no">NO_LINE</span>
|
450
|
+
<span class="vi">@right</span> <span class="o">=</span> <span class="no">NO_LINE</span>
|
451
|
+
<span class="vi">@top</span> <span class="o">=</span> <span class="no">NO_LINE</span>
|
452
|
+
<span class="vi">@bottom</span> <span class="o">=</span> <span class="no">NO_LINE</span>
|
453
|
+
<span class="vi">@diag</span> <span class="o">=</span> <span class="no">NO_LINE</span>
|
454
|
+
|
455
|
+
<span class="vi">@left_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
456
|
+
<span class="vi">@right_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
457
|
+
<span class="vi">@top_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
458
|
+
<span class="vi">@bottom_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
459
|
+
<span class="vi">@diag_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
460
|
+
|
461
|
+
<span class="vi">@need_diag1</span> <span class="o">=</span> <span class="no">NO_NEED_DIAG1</span>
|
462
|
+
<span class="vi">@need_diag2</span> <span class="o">=</span> <span class="no">NO_NEED_DIAG2</span>
|
463
|
+
|
464
|
+
<span class="nb">hash</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span>
|
465
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">send</span><span class="p">((</span><span class="n">k</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s1">'='</span><span class="p">)</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
|
466
|
+
<span class="k">end</span>
|
467
|
+
<span class="k">end</span>
|
468
|
+
|
469
|
+
<span class="k">def</span> <span class="nf">all</span><span class="o">=</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
470
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="n">directives</span>
|
471
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">directives</span>
|
472
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="n">directives</span>
|
473
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">bottom</span> <span class="o">=</span> <span class="n">directives</span>
|
474
|
+
<span class="k">end</span>
|
475
|
+
|
476
|
+
<span class="k">def</span> <span class="nf">process_directives</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
477
|
+
<span class="k">if</span> <span class="n">directives</span> <span class="o">=~</span> <span class="sr">/\s/</span>
|
478
|
+
<span class="n">args</span> <span class="o">=</span> <span class="n">directives</span><span class="o">.</span><span class="n">split</span>
|
479
|
+
<span class="k">else</span>
|
480
|
+
<span class="n">args</span> <span class="o">=</span> <span class="o">[</span><span class="n">directives</span><span class="o">]</span> <span class="c1"># there's just 1 here, stick it in an array</span>
|
481
|
+
<span class="k">end</span>
|
482
|
+
|
483
|
+
<span class="k">raise</span> <span class="s2">"no directives given to process_directives"</span> <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">empty?</span> <span class="c1"># maybe don't need this, just get thin black border? but for development I want to know if this happens.</span>
|
484
|
+
<span class="k">raise</span> <span class="s2">"too many directives given to process_directives"</span> <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">size</span> <span class="o">></span> <span class="mi">2</span>
|
485
|
+
|
486
|
+
<span class="n">instructions</span> <span class="o">=</span> <span class="o">[</span><span class="no">THIN</span><span class="p">,</span> <span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">[</span><span class="s1">'black'</span><span class="o">]]</span>
|
487
|
+
<span class="n">args</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">a</span><span class="o">|</span>
|
488
|
+
<span class="k">if</span> <span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
489
|
+
<span class="n">instructions</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span> <span class="o">=</span> <span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">[</span><span class="n">a</span><span class="o">]</span>
|
490
|
+
<span class="k">next</span>
|
491
|
+
<span class="k">end</span>
|
492
|
+
|
493
|
+
<span class="k">if</span> <span class="no">Borders</span><span class="o">.</span><span class="n">line_type_directives</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
494
|
+
<span class="n">instructions</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">=</span> <span class="no">Borders</span><span class="o">.</span><span class="n">line_type_directives_hash</span><span class="o">[</span><span class="n">a</span><span class="o">]</span>
|
495
|
+
<span class="k">next</span>
|
496
|
+
<span class="k">end</span>
|
497
|
+
|
498
|
+
<span class="k">if</span> <span class="no">Borders</span><span class="o">.</span><span class="n">line_type_constants</span><span class="o">.</span><span class="n">include?</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
499
|
+
<span class="n">instructions</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span> <span class="o">=</span> <span class="n">a</span>
|
500
|
+
<span class="k">next</span>
|
501
|
+
<span class="k">end</span>
|
502
|
+
|
503
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to format a border with </span><span class="si">#{</span><span class="n">a</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2">."</span>
|
504
|
+
<span class="k">end</span>
|
505
|
+
|
506
|
+
<span class="n">instructions</span>
|
507
|
+
<span class="k">end</span>
|
508
|
+
|
509
|
+
<span class="k">def</span> <span class="nf">right</span><span class="o">=</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
510
|
+
<span class="vi">@right</span><span class="p">,</span> <span class="vi">@right_colour</span> <span class="o">=</span> <span class="n">process_directives</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
511
|
+
<span class="k">end</span>
|
512
|
+
|
513
|
+
<span class="k">def</span> <span class="nf">left</span><span class="o">=</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
514
|
+
<span class="vi">@left</span><span class="p">,</span> <span class="vi">@left_colour</span> <span class="o">=</span> <span class="n">process_directives</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
515
|
+
<span class="k">end</span>
|
516
|
+
|
517
|
+
<span class="k">def</span> <span class="nf">top</span><span class="o">=</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
518
|
+
<span class="vi">@top</span><span class="p">,</span> <span class="vi">@top_colour</span> <span class="o">=</span> <span class="n">process_directives</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
519
|
+
<span class="k">end</span>
|
520
|
+
|
521
|
+
<span class="k">def</span> <span class="nf">bottom</span><span class="o">=</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
522
|
+
<span class="vi">@bottom</span><span class="p">,</span> <span class="vi">@bottom_colour</span> <span class="o">=</span> <span class="n">process_directives</span><span class="p">(</span><span class="n">directives</span><span class="p">)</span>
|
523
|
+
<span class="k">end</span>
|
524
|
+
<span class="k">end</span>
|
525
|
+
|
526
|
+
|
527
|
+
<span class="k">class</span> <span class="nc">Pattern</span>
|
528
|
+
<span class="no">NO_PATTERN</span> <span class="o">=</span> <span class="mh">0x00</span>
|
529
|
+
<span class="no">SOLID_FOREGROUND</span> <span class="o">=</span> <span class="mh">0x01</span>
|
530
|
+
<span class="no">SOLID_PATTERN</span> <span class="o">=</span> <span class="no">SOLID_FOREGROUND</span> <span class="c1"># for backwards compatibility</span>
|
531
|
+
<span class="no">FINE_DOTS</span> <span class="o">=</span> <span class="mh">0x02</span>
|
532
|
+
<span class="no">ALT_BARS</span> <span class="o">=</span> <span class="mh">0x03</span>
|
533
|
+
<span class="no">SPARSE_DOTS</span> <span class="o">=</span> <span class="mh">0x04</span>
|
534
|
+
<span class="no">THICK_HORZ_BANDS</span> <span class="o">=</span> <span class="mh">0x05</span>
|
535
|
+
<span class="no">THICK_VERT_BANDS</span> <span class="o">=</span> <span class="mh">0x06</span>
|
536
|
+
<span class="no">THICK_BACKWARD_DIAG</span> <span class="o">=</span> <span class="mh">0x07</span>
|
537
|
+
<span class="no">THICK_FORWARD_DIAG</span> <span class="o">=</span> <span class="mh">0x08</span>
|
538
|
+
<span class="no">BIG_SPOTS</span> <span class="o">=</span> <span class="mh">0x09</span>
|
539
|
+
<span class="no">BRICKS</span> <span class="o">=</span> <span class="mh">0x0A</span>
|
540
|
+
<span class="no">THIN_HORZ_BANDS</span> <span class="o">=</span> <span class="mh">0x0B</span>
|
541
|
+
<span class="no">THIN_VERT_BANDS</span> <span class="o">=</span> <span class="mh">0x0C</span>
|
542
|
+
<span class="no">THIN_BACKWARD_DIAG</span> <span class="o">=</span> <span class="mh">0x0D</span>
|
543
|
+
<span class="no">THIN_FORWARD_DIAG</span> <span class="o">=</span> <span class="mh">0x0E</span>
|
544
|
+
<span class="no">SQUARES</span> <span class="o">=</span> <span class="mh">0x0F</span>
|
545
|
+
<span class="no">DIAMONDS</span> <span class="o">=</span> <span class="mh">0x10</span>
|
546
|
+
<span class="no">LESS_DOTS</span> <span class="o">=</span> <span class="mh">0x11</span>
|
547
|
+
<span class="no">LEAST_DOTS</span> <span class="o">=</span> <span class="mh">0x12</span>
|
548
|
+
|
549
|
+
<span class="c1"># Want to keep these sorted in this order, so need nested array instead of hash.</span>
|
550
|
+
<span class="no">PATTERN_DIRECTIVES</span> <span class="o">=</span> <span class="o">[</span>
|
551
|
+
<span class="o">[</span><span class="s1">'none'</span><span class="p">,</span> <span class="no">NO_PATTERN</span><span class="o">]</span><span class="p">,</span>
|
552
|
+
<span class="o">[</span><span class="s1">'solid'</span><span class="p">,</span> <span class="no">SOLID_FOREGROUND</span><span class="o">]</span><span class="p">,</span>
|
553
|
+
<span class="o">[</span><span class="s1">'fine-dots'</span><span class="p">,</span> <span class="no">FINE_DOTS</span><span class="o">]</span><span class="p">,</span>
|
554
|
+
<span class="o">[</span><span class="s1">'alt-bars'</span><span class="p">,</span> <span class="no">ALT_BARS</span><span class="o">]</span><span class="p">,</span>
|
555
|
+
<span class="o">[</span><span class="s1">'sparse-dots'</span><span class="p">,</span> <span class="no">SPARSE_DOTS</span><span class="o">]</span><span class="p">,</span>
|
556
|
+
<span class="o">[</span><span class="s1">'thick-horz-bands'</span><span class="p">,</span> <span class="no">THICK_HORZ_BANDS</span><span class="o">]</span><span class="p">,</span>
|
557
|
+
<span class="o">[</span><span class="s1">'thick-vert-bands'</span><span class="p">,</span> <span class="no">THICK_VERT_BANDS</span><span class="o">]</span><span class="p">,</span>
|
558
|
+
<span class="o">[</span><span class="s1">'thick-backward-diag'</span><span class="p">,</span> <span class="no">THICK_BACKWARD_DIAG</span><span class="o">]</span><span class="p">,</span>
|
559
|
+
<span class="o">[</span><span class="s1">'thick-forward-diag'</span><span class="p">,</span> <span class="no">THICK_FORWARD_DIAG</span><span class="o">]</span><span class="p">,</span>
|
560
|
+
<span class="o">[</span><span class="s1">'big-spots'</span><span class="p">,</span> <span class="no">BIG_SPOTS</span><span class="o">]</span><span class="p">,</span>
|
561
|
+
<span class="o">[</span><span class="s1">'bricks'</span><span class="p">,</span> <span class="no">BRICKS</span><span class="o">]</span><span class="p">,</span>
|
562
|
+
<span class="o">[</span><span class="s1">'thin-horz-bands'</span><span class="p">,</span> <span class="no">THIN_HORZ_BANDS</span><span class="o">]</span><span class="p">,</span>
|
563
|
+
<span class="o">[</span><span class="s1">'thin-vert-bands'</span><span class="p">,</span> <span class="no">THIN_VERT_BANDS</span><span class="o">]</span><span class="p">,</span>
|
564
|
+
<span class="o">[</span><span class="s1">'thin-backward-diag'</span><span class="p">,</span> <span class="no">THIN_BACKWARD_DIAG</span><span class="o">]</span><span class="p">,</span>
|
565
|
+
<span class="o">[</span><span class="s1">'thin-forward-diag'</span><span class="p">,</span> <span class="no">THIN_FORWARD_DIAG</span><span class="o">]</span><span class="p">,</span>
|
566
|
+
<span class="o">[</span><span class="s1">'squares'</span><span class="p">,</span> <span class="no">SQUARES</span><span class="o">]</span><span class="p">,</span>
|
567
|
+
<span class="o">[</span><span class="s1">'diamonds'</span><span class="p">,</span> <span class="no">DIAMONDS</span><span class="o">]</span><span class="p">,</span>
|
568
|
+
<span class="o">[</span><span class="s1">'less-dots'</span><span class="p">,</span> <span class="no">LESS_DOTS</span><span class="o">]</span><span class="p">,</span>
|
569
|
+
<span class="o">[</span><span class="s1">'least-dots'</span><span class="p">,</span> <span class="no">LEAST_DOTS</span><span class="o">]</span>
|
570
|
+
<span class="o">]</span>
|
571
|
+
|
572
|
+
<span class="kp">attr_reader</span> <span class="ss">:pattern</span>
|
573
|
+
<span class="kp">attr_reader</span> <span class="ss">:pattern_fore_colour</span>
|
574
|
+
<span class="kp">attr_reader</span> <span class="ss">:pattern_back_colour</span>
|
575
|
+
|
576
|
+
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">fill_directives</span>
|
577
|
+
<span class="no">PATTERN_DIRECTIVES</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">a</span><span class="o">|</span> <span class="n">a</span><span class="o">[</span><span class="mi">0</span><span class="o">]</span><span class="p">}</span>
|
578
|
+
<span class="k">end</span>
|
579
|
+
|
580
|
+
<span class="k">def</span> <span class="nc">self</span><span class="o">.</span><span class="nf">directives_hash</span>
|
581
|
+
<span class="no">Hash</span><span class="o">[*</span><span class="no">PATTERN_DIRECTIVES</span><span class="o">.</span><span class="n">flatten</span><span class="o">]</span>
|
582
|
+
<span class="k">end</span>
|
583
|
+
|
584
|
+
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="nb">hash</span> <span class="o">=</span> <span class="p">{})</span>
|
585
|
+
<span class="vi">@pattern</span> <span class="o">=</span> <span class="no">NO_PATTERN</span>
|
586
|
+
<span class="vi">@pattern_fore_colour</span> <span class="o">=</span> <span class="mh">0x40</span>
|
587
|
+
<span class="vi">@pattern_back_colour</span> <span class="o">=</span> <span class="mh">0x41</span>
|
588
|
+
|
589
|
+
<span class="nb">hash</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="o">|</span>
|
590
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">send</span><span class="p">((</span><span class="n">k</span><span class="o">.</span><span class="n">to_s</span> <span class="o">+</span> <span class="s1">'='</span><span class="p">)</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
|
591
|
+
<span class="k">end</span>
|
592
|
+
<span class="k">end</span>
|
593
|
+
|
594
|
+
<span class="k">def</span> <span class="nf">pattern</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
595
|
+
<span class="k">case</span> <span class="n">arg</span>
|
596
|
+
<span class="k">when</span> <span class="nb">String</span>
|
597
|
+
<span class="n">pattern_index</span> <span class="o">=</span> <span class="no">Pattern</span><span class="o">.</span><span class="n">directives_hash</span><span class="o">[</span><span class="n">arg</span><span class="o">]</span>
|
598
|
+
<span class="k">when</span> <span class="nb">Integer</span>
|
599
|
+
<span class="n">pattern_index</span> <span class="o">=</span> <span class="n">arg</span>
|
600
|
+
<span class="k">else</span>
|
601
|
+
<span class="k">raise</span> <span class="s2">"I don't know how to interpret </span><span class="si">#{</span><span class="n">arg</span><span class="o">.</span><span class="n">inspect</span><span class="si">}</span><span class="s2"> as a pattern!"</span>
|
602
|
+
<span class="k">end</span>
|
603
|
+
<span class="k">raise</span> <span class="s2">"invalid pattern </span><span class="si">#{</span><span class="n">arg</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">pattern_index</span><span class="o">.</span><span class="n">nil?</span>
|
604
|
+
|
605
|
+
<span class="vi">@pattern</span> <span class="o">=</span> <span class="n">pattern_index</span>
|
606
|
+
<span class="k">end</span>
|
607
|
+
|
608
|
+
<span class="k">def</span> <span class="nf">fore_colour</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
609
|
+
<span class="n">colour_index</span> <span class="o">=</span> <span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">[</span><span class="n">arg</span><span class="o">]</span>
|
610
|
+
<span class="k">raise</span> <span class="s2">"Invalid colour </span><span class="si">#{</span><span class="n">arg</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">colour_index</span><span class="o">.</span><span class="n">nil?</span>
|
611
|
+
<span class="vi">@pattern_fore_colour</span> <span class="o">=</span> <span class="n">colour_index</span>
|
612
|
+
<span class="k">end</span>
|
613
|
+
<span class="k">alias</span> <span class="ss">:fore_color</span><span class="o">=</span> <span class="ss">:fore_colour</span><span class="o">=</span>
|
614
|
+
|
615
|
+
<span class="k">def</span> <span class="nf">back_colour</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
616
|
+
<span class="n">colour_index</span> <span class="o">=</span> <span class="no">Formatting</span><span class="o">::</span><span class="no">COLOURS</span><span class="o">[</span><span class="n">arg</span><span class="o">]</span>
|
617
|
+
<span class="k">raise</span> <span class="s2">"Invalid colour </span><span class="si">#{</span><span class="n">arg</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">colour_index</span><span class="o">.</span><span class="n">nil?</span>
|
618
|
+
<span class="vi">@pattern_back_colour</span> <span class="o">=</span> <span class="n">colour_index</span>
|
619
|
+
<span class="k">end</span>
|
620
|
+
<span class="k">alias</span> <span class="ss">:back_color</span><span class="o">=</span> <span class="ss">:back_colour</span><span class="o">=</span>
|
621
|
+
|
622
|
+
<span class="c1"># Sets the foreground colour, also if no pattern has been specified</span>
|
623
|
+
<span class="c1"># will assume you want a solid colour fill.</span>
|
624
|
+
<span class="k">def</span> <span class="nf">colour</span><span class="o">=</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
|
625
|
+
<span class="nb">self</span><span class="o">.</span><span class="n">fore_colour</span> <span class="o">=</span> <span class="n">arg</span>
|
626
|
+
<span class="vi">@pattern</span> <span class="o">=</span> <span class="no">SOLID_PATTERN</span> <span class="k">if</span> <span class="vi">@pattern</span> <span class="o">==</span> <span class="no">NO_PATTERN</span>
|
627
|
+
<span class="k">end</span>
|
628
|
+
<span class="k">alias</span> <span class="ss">:color</span><span class="o">=</span> <span class="ss">:colour</span><span class="o">=</span>
|
629
|
+
<span class="k">alias</span> <span class="ss">:fill</span><span class="o">=</span> <span class="ss">:colour</span><span class="o">=</span>
|
630
|
+
<span class="k">end</span>
|
631
|
+
|
632
|
+
<span class="k">class</span> <span class="nc">Protection</span>
|
633
|
+
<span class="kp">attr_accessor</span> <span class="ss">:cell_locked</span>
|
634
|
+
<span class="kp">attr_accessor</span> <span class="ss">:formula_hidden</span>
|
635
|
+
|
636
|
+
<span class="k">def</span> <span class="nf">initialize</span>
|
637
|
+
<span class="vi">@cell_locked</span> <span class="o">=</span> <span class="mi">1</span>
|
638
|
+
<span class="vi">@formula_hidden</span> <span class="o">=</span> <span class="mi">0</span>
|
639
|
+
<span class="k">end</span>
|
640
|
+
<span class="k">end</span>
|
641
|
+
</pre></div>
|
642
|
+
|
643
|
+
|
644
|
+
</div>
|
645
|
+
<div id="right">
|
646
|
+
<ul id="nav">
|
647
|
+
<li><a href="surpass-manual-0-0-5.pdf">Download PDF Manual</a></li>
|
648
|
+
<li><a href="http://rubyforge.org/projects/surpass">Rubyforge Project Page</a></li>
|
649
|
+
</ul>
|
650
|
+
<div class="box">
|
651
|
+
<h2 style="margin-top:17px">Latest News</h2>
|
652
|
+
<ul>
|
653
|
+
<li>...</li>
|
654
|
+
</ul>
|
655
|
+
</div>
|
656
|
+
</div>
|
657
|
+
<div id="clear"></div></div>
|
658
|
+
<div id="footer">
|
659
|
+
<p>Site template designed by <a href="http://loadfoo.org/" rel="external">LoadFoO</a>. Valid <a href="http://jigsaw.w3.org/css-validator/check/referer" rel="external">CSS</a> & <a href="http://validator.w3.org/check?uri=referer" rel="external">XHTML</a></p>
|
660
|
+
</div>
|
661
|
+
</div>
|
662
|
+
|
663
|
+
</body>
|
664
|
+
</html>
|