template_docx 0.1.0 → 0.1.1
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 +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 <<<'
|