wiz_rtf 0.5.5 → 0.6.0
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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/wiz_rtf/color.rb +43 -4
- data/lib/wiz_rtf/document.rb +23 -13
- data/lib/wiz_rtf/font.rb +53 -2
- data/lib/wiz_rtf/text.rb +2 -1
- data/lib/wiz_rtf/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 750294995f94f17825b1d378fdad60a6adb2bfaf
|
4
|
+
data.tar.gz: e1cddfe7fb6e8365ef0d32e03749c2efcd4e3e98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca22e903392cf22fb1c17fe9ac2e44e8701f1e7850d71a6d7a6f8202659521c67bb19884083387d5693203e2b644da5e520b955e0c8f8bea7bdd40f7af98a962
|
7
|
+
data.tar.gz: 721f1d84373e322543bc94ec831c6ca616c81293fad2fcb99e340d72e3e64afb2bb52ab2fc58ea6098fe732d384eff708b1054923ad2f21812f48ada0e7311ce
|
data/README.md
CHANGED
@@ -21,11 +21,11 @@ Or install it yourself as:
|
|
21
21
|
## Usage
|
22
22
|
```ruby
|
23
23
|
doc = WizRtf::Document.new do
|
24
|
-
text "学生综合素质报告",
|
24
|
+
text "学生综合素质报告", 'text-align' => :center, 'font-family' => 'Microsoft YaHei', 'font-size' => 48, 'font-bold' => true, 'font-italic' => true, 'font-underline' => true
|
25
25
|
image('h:\eahey.png')
|
26
26
|
page_break
|
27
|
-
text "A Table Demo"
|
28
|
-
table [[{content:'
|
27
|
+
text "A Table Demo", 'foreground-color' => WizRtf::Color::RED, 'background-color' => '#0f00ff'
|
28
|
+
table [[{content: WizRtf::Image.new('h:\eahey.png'),rowspan:4},{content:'4',rowspan:4},1,{content:'1',colspan:2}],
|
29
29
|
[{content:'4',rowspan:3,colspan:2},8],[11]], column_widths:{1=>100,2 => 100,3 => 50,4 => 50,5 => 50} do
|
30
30
|
add_row [1]
|
31
31
|
end
|
data/lib/wiz_rtf/color.rb
CHANGED
@@ -7,10 +7,48 @@
|
|
7
7
|
module WizRtf
|
8
8
|
class Color
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
RED = '#FF0000'
|
11
|
+
YELLOW = '#FFFF00'
|
12
|
+
LIME = '#00FF00'
|
13
|
+
CYAN = '#00FFFF'
|
14
|
+
BLUE = '#0000FF'
|
15
|
+
MAGENTA = '#FF00FF'
|
16
|
+
MAROON = '#800000'
|
17
|
+
OLIVE = '#808000'
|
18
|
+
GREEN = '#008000'
|
19
|
+
TEAL = '#008080'
|
20
|
+
NAVY = '#000080'
|
21
|
+
PURPLE = '#800080'
|
22
|
+
WHITE = '#FFFFFF'
|
23
|
+
SILVER = '#C0C0C0'
|
24
|
+
GRAY = '#808080'
|
25
|
+
BLACK = '#000000'
|
26
|
+
|
27
|
+
def initialize(*rgb)
|
28
|
+
case rgb.size
|
29
|
+
when 1
|
30
|
+
from_rgb_hex(rgb.first)
|
31
|
+
when 3
|
32
|
+
from_rgb(*rgb)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def from_rgb_hex(color)
|
37
|
+
color = '#%.6x' % color if color.is_a? Integer
|
38
|
+
rgb = color[1,7].scan(/.{2}/).map{ |c| c.to_i(16) }
|
39
|
+
from_rgb(*rgb)
|
40
|
+
end
|
41
|
+
|
42
|
+
def from_rgb(*rgb)
|
43
|
+
@red, @green, @blue = rgb
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_rgb
|
47
|
+
[@red, @green, @blue]
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_rgb_hex
|
51
|
+
"#" + to_rgb.map {|c| "%02X" % c }.join
|
14
52
|
end
|
15
53
|
|
16
54
|
def render(io)
|
@@ -20,5 +58,6 @@ module WizRtf
|
|
20
58
|
io.cmd :blue, @blue
|
21
59
|
end
|
22
60
|
end
|
61
|
+
|
23
62
|
end
|
24
63
|
end
|
data/lib/wiz_rtf/document.rb
CHANGED
@@ -10,28 +10,38 @@ module WizRtf
|
|
10
10
|
@fonts = []
|
11
11
|
@colors = []
|
12
12
|
@parts = []
|
13
|
-
font
|
14
|
-
font 1, 'fmodern', 'Courier New', 0, 1
|
15
|
-
font 2, 'fnil', '宋体', 2, 2
|
16
|
-
color 0, 0, 0
|
17
|
-
color 255, 0, 0
|
18
|
-
color 255, 0, 255
|
13
|
+
font 'Courier New'
|
19
14
|
block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
20
15
|
end
|
21
16
|
|
22
|
-
def head
|
23
|
-
|
17
|
+
def head(&block)
|
18
|
+
block.arity<1 ? self.instance_eval(&block) : block.call(self) if block_given?
|
24
19
|
end
|
25
20
|
|
26
|
-
def font(
|
27
|
-
@fonts
|
21
|
+
def font(name, family = nil, character_set = 0, prq = 2)
|
22
|
+
unless index = @fonts.index {|f| f.name == name}
|
23
|
+
index = @fonts.size
|
24
|
+
opts = WizRtf::Font::FONTS.detect {|f| f[:name] == name}
|
25
|
+
@fonts << WizRtf::Font.new(index, opts[:name], opts[:family], opts[:character], opts[:prq])
|
26
|
+
end
|
27
|
+
index
|
28
28
|
end
|
29
29
|
|
30
|
-
def color(
|
31
|
-
|
30
|
+
def color(*rgb)
|
31
|
+
color = WizRtf::Color.new(*rgb)
|
32
|
+
if index = @colors.index {|c| c.to_rgb_hex == color.to_rgb_hex}
|
33
|
+
index += 1
|
34
|
+
else
|
35
|
+
@colors << color
|
36
|
+
index = @colors.size
|
37
|
+
end
|
38
|
+
index
|
32
39
|
end
|
33
40
|
|
34
|
-
def text(str, styles = {
|
41
|
+
def text(str, styles = {})
|
42
|
+
styles['foreground-color'] = color(styles['foreground-color']) if styles['foreground-color']
|
43
|
+
styles['background-color'] = color(styles['background-color']) if styles['background-color']
|
44
|
+
styles['font-family'] = font(styles['font-family']) if styles['font-family']
|
35
45
|
@parts << WizRtf::Text.new(str, styles)
|
36
46
|
end
|
37
47
|
|
data/lib/wiz_rtf/font.rb
CHANGED
@@ -6,9 +6,60 @@
|
|
6
6
|
|
7
7
|
module WizRtf
|
8
8
|
class Font
|
9
|
-
|
9
|
+
FAMILIES = {
|
10
|
+
default: 'fnil',
|
11
|
+
roman: 'froman',
|
12
|
+
swiss: 'fswiss',
|
13
|
+
fixed_pitch: 'fmodern',
|
14
|
+
script: 'fscript',
|
15
|
+
decorative: 'fdecor',
|
16
|
+
technical: 'ftech',
|
17
|
+
bidirectional: 'fbidi'
|
18
|
+
}
|
19
|
+
|
20
|
+
CHARACTER_SET = {
|
21
|
+
ansi: 0,
|
22
|
+
default: 1,
|
23
|
+
symbol: 2,
|
24
|
+
invalid: 3,
|
25
|
+
mac: 77,
|
26
|
+
shiftJis: 128,
|
27
|
+
hangul: 129,
|
28
|
+
johab: 130,
|
29
|
+
gb2312: 134,
|
30
|
+
big5: 136,
|
31
|
+
greek: 161,
|
32
|
+
turkish: 162,
|
33
|
+
vietnamese: 163,
|
34
|
+
hebrew: 177,
|
35
|
+
arabic: 178,
|
36
|
+
arabicTraditional: 179,
|
37
|
+
arabic_user: 180,
|
38
|
+
hebrew_user: 181,
|
39
|
+
baltic: 186,
|
40
|
+
russian: 204,
|
41
|
+
thai: 222,
|
42
|
+
eastern_european: 238,
|
43
|
+
pc437: 254,
|
44
|
+
oem: 255
|
45
|
+
}
|
46
|
+
|
47
|
+
FONTS = [
|
48
|
+
{family:'fswiss', name:'Arial', character:0, prq:2},
|
49
|
+
{family:'froman', name:'Courier New', character:0, prq:1},
|
50
|
+
{family:'froman', name:'Times New Roman', character:0, prq:2},
|
51
|
+
{family:'fnil', name:'SimSun', character:134, prq:2},
|
52
|
+
{family:'fmodern', name:'KaiTi', character:134, prq:1},
|
53
|
+
{family:'fnil', name:'FangSong', character:134, prq:1},
|
54
|
+
{family:'fmodern', name:'SimHei', character:134, prq:1},
|
55
|
+
{family:'fmodern', name:'NSimSun', character:134, prq:1},
|
56
|
+
{family:'fswiss', name:'Microsoft YaHei', character:134, prq:2}
|
57
|
+
]
|
58
|
+
|
59
|
+
attr_accessor :name, :num
|
60
|
+
def initialize(num, name, family = 'fnil', character_set = 0, prq = 2)
|
10
61
|
@num = num
|
11
|
-
@family = family
|
62
|
+
@family = family if family
|
12
63
|
@name = name
|
13
64
|
@character_set = character_set
|
14
65
|
@prq = prq
|
data/lib/wiz_rtf/text.rb
CHANGED
@@ -10,13 +10,14 @@ module WizRtf
|
|
10
10
|
|
11
11
|
def initialize(str = '', styles = {})
|
12
12
|
@str = str
|
13
|
-
@styles = {'text-align' => :left, 'font-size' => 24, 'font-bold' => false, 'font-italic' => false, 'font-underline' => false, 'foreground-color' =>
|
13
|
+
@styles = {'text-align' => :left, 'font-family' => 0, 'font-size' => 24, 'font-bold' => false, 'font-italic' => false, 'font-underline' => false, 'foreground-color' => 0, 'background-color' => 0 }.merge(styles)
|
14
14
|
end
|
15
15
|
|
16
16
|
def render(io)
|
17
17
|
io.group do
|
18
18
|
io.cmd :pard
|
19
19
|
io.cmd TEXT_ALIGN_MAP[@styles['text-align']]
|
20
|
+
io.cmd :f, @styles['font-family']
|
20
21
|
io.cmd :fs, @styles['font-size']
|
21
22
|
io.cmd @styles['font-bold'] ? 'b' : 'b0'
|
22
23
|
io.cmd @styles['font-italic'] ? 'i' : 'i0'
|
data/lib/wiz_rtf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wiz_rtf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- songgz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|