template_docx 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +72 -8
- data/lib/docx_templater/command.rb +1 -8
- data/lib/docx_templater/version.rb +1 -1
- data/lib/docx_templater.rb +24 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 659fd10b37a237160b5030a416a992af4df658fd
|
4
|
+
data.tar.gz: 9f3dc09be8c5c2304b7df86de79232f1abb8d856
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdefb2005499f76a403312f742e15b0348c2a91e0a7bebdba4aab07233950ac6d8e15247f0317ffc67978a0a64935b10b0ef4f33c28a0f37ff4577b9523916e0
|
7
|
+
data.tar.gz: a676e275f69ec389615d89e7f44f84b080c825553e03d6f7eda906376307e14a559796219dcb25c4b092fab2f07bef2543c3c678148f7906126b6869883f6463
|
data/README.md
CHANGED
@@ -1,17 +1,74 @@
|
|
1
|
-
|
1
|
+
<img src="https://travis-ci.org/jawspeak/ruby-docx-templater.png" /> [https://travis-ci.org/jawspeak/ruby-docx-templater]
|
2
2
|
|
3
|
+
[!](https://travis-ci.org/jawspeak/ruby-docx-templater.png) [https://travis-ci.org/jawspeak/ruby-docx-templater]
|
3
4
|
|
4
|
-
#
|
5
|
+
# ruby-docx-templater
|
5
6
|
|
6
|
-
|
7
|
+
Roughly, this takes a .docx file and uses it as a template to create a new docx, with your data
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'template_docx'
|
16
|
+
```
|
17
|
+
|
18
|
+
Or,
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
|
22
|
+
```
|
23
|
+
|
24
|
+
And then execute:
|
25
|
+
|
26
|
+
$ bundle
|
27
|
+
|
28
|
+
Or install it yourself as:
|
29
|
+
|
30
|
+
$ gem install aliexpress
|
12
31
|
|
13
32
|
## Usage
|
14
33
|
|
34
|
+
|
35
|
+
Command Line:
|
36
|
+
|
37
|
+
```
|
38
|
+
Usage: docx-templater [options]
|
39
|
+
-i, --input-file [file] Default: Example.docx
|
40
|
+
-d, --format-data [data] Default: data format file, json format - Not Implementation, No Used!!
|
41
|
+
-o, --output-file [file] Default: OutputTemplate.docx
|
42
|
+
-h, --help Show this message
|
43
|
+
-v, --version Print version
|
44
|
+
```
|
45
|
+
|
46
|
+
Program:
|
47
|
+
|
48
|
+
```
|
49
|
+
options = {
|
50
|
+
input_file: 'spec/example_input/ExampleBrand.docx'
|
51
|
+
output_file: 'OutputTemplate.docx',
|
52
|
+
data = {
|
53
|
+
company: '伟大的邪王真眼',
|
54
|
+
shop_name: '斜阳西下,三百二十七',
|
55
|
+
shop_id: 122323232323,
|
56
|
+
shop_url: 'http://blog.csdn.net/ruixj/article/details/3765385',
|
57
|
+
master_company: '紫电清爽公司',
|
58
|
+
brand_name: '邪王正眼',
|
59
|
+
start_date: (Time.now - 3600 * 24).strftime('%Y年-%m月-%d日'),
|
60
|
+
end_date: Time.now.strftime('%Y年-%m月-%d日'),
|
61
|
+
license_number: 1212121212,
|
62
|
+
authorized_party: '夏健的夏天',
|
63
|
+
authorized_date: Time.now.strftime('%Y年-%m月-%d日')
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
DocxTemplater.template_docx options
|
68
|
+
```
|
69
|
+
|
70
|
+
### operatation flow
|
71
|
+
|
15
72
|
* Create your docx "template" in Word
|
16
73
|
* Install rvm and bundler
|
17
74
|
* Run `bundle install`.
|
@@ -37,6 +94,13 @@ __PRO TIP:__ You don’t want any grammar errors on the template Keys, or they w
|
|
37
94
|
* Run the integration test suite (on mac, with word installed): `rake integration`
|
38
95
|
* Build the gem file: `gem build docx_templater.gemspec`
|
39
96
|
|
97
|
+
## Features
|
98
|
+
|
99
|
+
* All manipulation in memory (great if you have sensitive data)
|
100
|
+
* Global key/value substitutions by entering a `$KEY$` anywhere in the word document, with whatever formatting you want.
|
101
|
+
* Multi-row loops inside tables, also with whatever your formatting you wish. `#BEGIN_ROW:XYZ#`... `#END_ROW:XYZ#` see tests/example
|
102
|
+
* Summation formula for row count `#SUM:XYZ_LIST#`
|
103
|
+
|
40
104
|
|
41
105
|
## Future ideas
|
42
106
|
|
@@ -44,4 +108,4 @@ __PRO TIP:__ You don’t want any grammar errors on the template Keys, or they w
|
|
44
108
|
** See also: {http://tomasvarsavsky.com/2009/04/04/simple-word-document-templating-using-ruby-and-xml/} and {https://github.com/bagilevi/docx_builder/tree/master/example/plan_report_template},
|
45
109
|
* Possibly, also use Fields to create the looping constructs. That would be a big win for preventing word adding markup between words in by text.
|
46
110
|
* Make rendering from the template more efficient.
|
47
|
-
* Try templating header/footer (I haven't attempted that yet because I do not have a need for it.)
|
111
|
+
* Try templating header/footer (I haven't attempted that yet because I do not have a need for it.)
|
@@ -21,14 +21,7 @@ module DocxTemplater
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.generate_doc(options = {})
|
24
|
-
|
25
|
-
|
26
|
-
DocxTemplater::DocxCreator.new(options[:input_file], options[:data]).generate_docx_file(options[:output_file])
|
27
|
-
|
28
|
-
archive = Zip::File.open(options[:output_file])
|
29
|
-
archive.close
|
30
|
-
|
31
|
-
DocxTemplater.open_output_file options[:output_file]
|
24
|
+
DocxTemplater.template_docx options
|
32
25
|
end
|
33
26
|
|
34
27
|
protected
|
data/lib/docx_templater.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'docx_templater/version'
|
2
2
|
require 'docx_templater/template_processor'
|
3
|
+
require 'docx_templater/docx_creator'
|
3
4
|
|
4
5
|
module DocxTemplater
|
5
6
|
module_function
|
@@ -9,6 +10,29 @@ module DocxTemplater
|
|
9
10
|
puts str if ENV['DEBUG']
|
10
11
|
end
|
11
12
|
|
13
|
+
# template docx file
|
14
|
+
#
|
15
|
+
# @param {Hash} options -
|
16
|
+
#
|
17
|
+
# @example
|
18
|
+
# options = {
|
19
|
+
# input_file: 'xxx',
|
20
|
+
# output_file: 'xxx',
|
21
|
+
# data: { key: value }
|
22
|
+
# }
|
23
|
+
def template_docx(options = {})
|
24
|
+
puts "options: #{options}"
|
25
|
+
|
26
|
+
DocxTemplater::DocxCreator.new(options[:input_file], options[:data]).generate_docx_file(options[:output_file])
|
27
|
+
|
28
|
+
archive = Zip::File.open(options[:output_file])
|
29
|
+
archive.close
|
30
|
+
|
31
|
+
DocxTemplater.open_output_file options[:output_file]
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
# Open word file in mac os(with word installed)
|
12
36
|
def open_output_file(output_file)
|
13
37
|
puts "\n************************************"
|
14
38
|
puts ' >>> Only will work on mac <<<'
|