latex-project-template 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
data/README.md
CHANGED
@@ -54,13 +54,13 @@ To list templates in ~/.latex\_project\_template, we type
|
|
54
54
|
## Special notations of template file names
|
55
55
|
|
56
56
|
\_\_IMPORT\_\_
|
57
|
-
:In \_\_IMPORT\_\_ we write list of files to import from other template.
|
57
|
+
: In \_\_IMPORT\_\_ we write list of files to import from other template.
|
58
58
|
\_\_PROJECT\_\_
|
59
|
-
:Replace \_\_PROJECT\_\_ by name of project.
|
59
|
+
: Replace \_\_PROJECT\_\_ by name of project.
|
60
60
|
\_\_DOT\_\_
|
61
|
-
:Replace \_\_DOT\_\_ by '.'.
|
61
|
+
: Replace \_\_DOT\_\_ by '.'.
|
62
62
|
\_\_IGNORE\_\_
|
63
|
-
:Files including \_\_IGNORE\_\_ are ignored.
|
63
|
+
: Files including \_\_IGNORE\_\_ are ignored.
|
64
64
|
|
65
65
|
## Contributing to latex-project-template
|
66
66
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/bin/latex-project-template
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{latex-project-template}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Takayuki YAMAGUCHI"]
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
"spec/task_spec.rb",
|
36
36
|
"template/default/Rakefile.erb",
|
37
37
|
"template/default/__DOT__gitignore",
|
38
|
-
"template/default/__PROJECT__.tex",
|
38
|
+
"template/default/__PROJECT__.tex.erb",
|
39
39
|
"template/japanese/__IMPORT__",
|
40
40
|
"template/japanese/latexmkrc"
|
41
41
|
]
|
@@ -11,47 +11,63 @@ class LaTeXProjectTemplate
|
|
11
11
|
end
|
12
12
|
|
13
13
|
class Configuration
|
14
|
+
TEMPLATE_DIRECTORY = 'template'
|
15
|
+
VARIABLE_DIRECTORY = 'variable'
|
16
|
+
DEFAULT_PROFILE_YAML = { :name => "Your Name" }
|
17
|
+
|
14
18
|
def self.create_new_config(home_path = nil)
|
15
19
|
config = LPTConfig.new(DEFAULT_CONFIG, :home => home_path)
|
16
20
|
dir = config.directory
|
17
|
-
|
18
|
-
|
21
|
+
FileUtils.cp_r("#{File.expand_path(File.join(File.dirname(__FILE__), '../template/'))}", dir)
|
22
|
+
vars_dir = File.join(dir, VARIABLE_DIRECTORY)
|
23
|
+
FileUtils.mkdir_p(vars_dir)
|
24
|
+
open(File.join(vars_dir, 'profile.yaml'), 'w') do |f|
|
25
|
+
f.print DEFAULT_PROFILE_YAML.to_yaml
|
19
26
|
end
|
20
27
|
end
|
21
28
|
|
22
29
|
def initialize(home_path)
|
23
|
-
@
|
30
|
+
@user_config = LPTConfig.new(DEFAULT_CONFIG, :home => home_path)
|
24
31
|
end
|
25
32
|
|
26
33
|
def config_directory
|
27
|
-
@
|
34
|
+
@user_config.directory
|
28
35
|
end
|
29
36
|
|
30
37
|
def list_template
|
31
|
-
@
|
38
|
+
@user_config.list_in_directory(TEMPLATE_DIRECTORY)
|
39
|
+
end
|
40
|
+
|
41
|
+
def user_config_template_path(template_name)
|
42
|
+
File.join(TEMPLATE_DIRECTORY, template_name)
|
32
43
|
end
|
44
|
+
private :user_config_template_path
|
33
45
|
|
34
46
|
def template_exist?(template)
|
35
|
-
if path = @
|
47
|
+
if path = @user_config.exist?(user_config_template_path(template))
|
36
48
|
return LaTeXProjectTemplate::Directory.new(path)
|
37
49
|
end
|
38
50
|
false
|
39
51
|
end
|
40
52
|
|
41
|
-
def template_file(template, name)
|
42
|
-
unless path = @config.template_exist?(File.join(template, name))
|
43
|
-
path = @config.template_exist?(File.join('default', name))
|
44
|
-
end
|
45
|
-
path
|
46
|
-
end
|
47
|
-
|
48
53
|
def delete_template(template)
|
49
54
|
if String === template && template.size > 0
|
50
|
-
@
|
55
|
+
@user_config.delete(user_config_template_path(template))
|
51
56
|
else
|
52
57
|
raise ArgumentError, "Invalid template name to delete: #{template.inspect}"
|
53
58
|
end
|
54
59
|
end
|
60
|
+
|
61
|
+
def user_variables
|
62
|
+
vars = {}
|
63
|
+
if dir = @user_config.exist?('variable')
|
64
|
+
Dir.glob(File.join(dir, '*.yaml')).each do |yaml_path|
|
65
|
+
key = File.basename(yaml_path).sub(/\.yaml$/, '').intern
|
66
|
+
vars[key] = YAML.load_file(yaml_path)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
vars
|
70
|
+
end
|
55
71
|
end
|
56
72
|
|
57
73
|
class Directory
|
@@ -146,8 +162,11 @@ class LaTeXProjectTemplate
|
|
146
162
|
class ErbObject
|
147
163
|
attr_reader :project_name
|
148
164
|
|
149
|
-
def initialize(project_name)
|
165
|
+
def initialize(project_name, variables)
|
150
166
|
@project_name = project_name
|
167
|
+
variables.each do |key, val|
|
168
|
+
instance_variable_set("@#{key}", val)
|
169
|
+
end
|
151
170
|
end
|
152
171
|
end
|
153
172
|
|
@@ -164,7 +183,7 @@ class LaTeXProjectTemplate
|
|
164
183
|
end
|
165
184
|
|
166
185
|
def create_files
|
167
|
-
erb_obj = LaTeXProjectTemplate::ErbObject.new(@project_name)
|
186
|
+
erb_obj = LaTeXProjectTemplate::ErbObject.new(@project_name, @config.user_variables)
|
168
187
|
created_files = @template.copy_to_directory(@target_dir, erb_obj)
|
169
188
|
@template.files_to_import.each do |name, files|
|
170
189
|
if template_to_import = @config.template_exist?(name)
|
@@ -180,7 +199,7 @@ class LaTeXProjectTemplate
|
|
180
199
|
git = Git.init(@target_dir)
|
181
200
|
files = create_files
|
182
201
|
git.add
|
183
|
-
git.commit("Copy template
|
202
|
+
git.commit("Copy template: #{@template.name}.")
|
184
203
|
if io = opts[:io]
|
185
204
|
files.map! do |path|
|
186
205
|
path.sub!(@target_dir, '')
|
@@ -33,6 +33,12 @@ describe LaTeXProjectTemplate::Configuration do
|
|
33
33
|
subject.template_exist?('not_exist').should be_false
|
34
34
|
end
|
35
35
|
|
36
|
+
it "should return profile" do
|
37
|
+
vars = subject.user_variables
|
38
|
+
vars.should be_an_instance_of Hash
|
39
|
+
vars[:profile][:name].should == "Your Name"
|
40
|
+
end
|
41
|
+
|
36
42
|
after(:all) do
|
37
43
|
FileUtils.rm_r(@home_directory)
|
38
44
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: latex-project-template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Takayuki YAMAGUCHI
|
@@ -160,7 +160,7 @@ files:
|
|
160
160
|
- spec/task_spec.rb
|
161
161
|
- template/default/Rakefile.erb
|
162
162
|
- template/default/__DOT__gitignore
|
163
|
-
- template/default/__PROJECT__.tex
|
163
|
+
- template/default/__PROJECT__.tex.erb
|
164
164
|
- template/japanese/__IMPORT__
|
165
165
|
- template/japanese/latexmkrc
|
166
166
|
has_rdoc: true
|
@@ -177,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
177
|
requirements:
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
hash:
|
180
|
+
hash: -1327005119075032685
|
181
181
|
segments:
|
182
182
|
- 0
|
183
183
|
version: "0"
|