vim_printer 0.0.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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -0
  5. data/.yardopts +2 -0
  6. data/01-seoul256-input.png +0 -0
  7. data/01-seoul256-output.png +0 -0
  8. data/02-Tomorrow-Night-input.png +0 -0
  9. data/02-Tomorrow-Night-output.png +0 -0
  10. data/Gemfile +7 -0
  11. data/Guardfile +15 -0
  12. data/LICENSE +22 -0
  13. data/README.md +192 -0
  14. data/Rakefile +19 -0
  15. data/bin/vim_printer +4 -0
  16. data/lib/vim_printer/cli.rb +119 -0
  17. data/lib/vim_printer/core_ext/hash.rb +56 -0
  18. data/lib/vim_printer/logger.rb +10 -0
  19. data/lib/vim_printer/utility.rb +87 -0
  20. data/lib/vim_printer/version.rb +3 -0
  21. data/lib/vim_printer.rb +7 -0
  22. data/test/fixtures/inputs/demo1.xxx.rb +1 -0
  23. data/test/fixtures/inputs/demo1.yyy.rb +1 -0
  24. data/test/fixtures/inputs/demo2.xxx.rb +1 -0
  25. data/test/fixtures/inputs/demo2.yyy.rb +1 -0
  26. data/test/fixtures/inputs/java/demo3.xxx.java +1 -0
  27. data/test/fixtures/inputs/java/demo3.yyy.java +1 -0
  28. data/test/fixtures/inputs/java/demo4.xxx.java +1 -0
  29. data/test/fixtures/inputs/java/demo4.yyy.java +1 -0
  30. data/test/fixtures/inputs/noexts1_zzz +1 -0
  31. data/test/fixtures/inputs/noexts2_zzz +1 -0
  32. data/test/fixtures/outputs/demo1.xxx.rb.xhtml +91 -0
  33. data/test/fixtures/outputs/demo1.yyy.rb.xhtml +91 -0
  34. data/test/fixtures/outputs/demo2.xxx.rb.xhtml +91 -0
  35. data/test/fixtures/outputs/demo2.yyy.rb.xhtml +91 -0
  36. data/test/fixtures/outputs/java/demo3.xxx.java.xhtml +91 -0
  37. data/test/fixtures/outputs/java/demo3.yyy.java.xhtml +91 -0
  38. data/test/fixtures/outputs/java/demo4.xxx.java.xhtml +91 -0
  39. data/test/fixtures/outputs/java/demo4.yyy.java.xhtml +91 -0
  40. data/test/lib/vim_printer/test_utility.rb +48 -0
  41. data/test/test_helper.rb +12 -0
  42. data/vim_printer.gemspec +34 -0
  43. metadata +289 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e5a86cef7010bb8114f742c4591e7b6067aed22
4
+ data.tar.gz: 7d275164d3fe3e242ad70e5bb190e3f9de84d198
5
+ SHA512:
6
+ metadata.gz: 681876c8a44e88a6611020a5b040acf27697736bb96557322f2f20bfe78db2e9aeb47d16f41b35b9765ae3240fbba04e309d55866d6c7c490b181faa30e529bd
7
+ data.tar.gz: ac5e1c4c46079a4a893bcfeccc2f6f07f8a0c19eda485f1e0d9426cb3dd5927c33b43ae465968117f7c51a89452eba2b90f5cb7d351192d4ccf65a7314b8315a
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ # Custom ignore files
20
+ TODOs.md
21
+ output.tar.gz
22
+ output.tgz
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.1
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.1
data/.yardopts ADDED
@@ -0,0 +1,2 @@
1
+ # see: http://rubydoc.info/gems/yard/file/README.md
2
+ --no-private --protected lib/**/*.rb - README.md LICENSE
Binary file
Binary file
Binary file
Binary file
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ebook_renamer.gemspec
4
+ gemspec
5
+
6
+ gem 'code_lister', '~> 0.0.6'
7
+ gem 'minitar'
data/Guardfile ADDED
@@ -0,0 +1,15 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+ guard 'minitest' do
4
+
5
+ # with Minitest::Unit
6
+ watch(%r|^test/(.*)\/?test_(.*)\.rb|)
7
+ watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
8
+ watch(%r|^test/test_helper\.rb|) { "test" }
9
+
10
+ # with Minitest::Spec
11
+ # watch(%r|^spec/(.*)_spec\.rb|)
12
+ # watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
13
+ # watch(%r|^spec/spec_helper\.rb|) { "spec" }
14
+
15
+ end
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Burin Choomnuan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,192 @@
1
+ ## vim_printer
2
+
3
+ Print any files to html using the power of Vim. Output will be saved to `output.tar.gz` and ready for
4
+ extract and viewing in your favourite browser.
5
+
6
+ - Unlimited support for [vim colorschemes][] if enabled, or `default` colorscheme that comes with Vim.
7
+ - Can print any files in any languages that you can open with Vim.
8
+ - Use the power of [Vim][] to print the code without any other tools.
9
+ - Tested in Linux/OSX and should also works with Windows.
10
+
11
+ [![Gem Version](https://badge.fury.io/rb/vim_printer.svg)](http://badge.fury.io/rb/vim_printer)
12
+
13
+ ### Example Outputs:
14
+
15
+ - The original input using [seoul256.vim][] colorscheme in Vim
16
+
17
+ ![](https://github.com/agilecreativity/vim_printer/raw/master/01-seoul256-input.png)
18
+
19
+ The html output as rendered in the browser
20
+
21
+ ![](https://github.com/agilecreativity/vim_printer/raw/master/01-seoul256-output.png)
22
+
23
+ - The original input using `Tomorrow-Night` colorscheme from [Tomorrow-theme][] in Vim
24
+
25
+ ![](https://github.com/agilecreativity/vim_printer/raw/master/02-Tomorrow-Night-input.png)
26
+
27
+ The html output as renderd in the browser
28
+
29
+ ![](https://github.com/agilecreativity/vim_printer/raw/master/02-Tomorrow-Night-output.png)
30
+
31
+ ### Requirements
32
+
33
+ - [Vim][] - any recent version should be ok.
34
+
35
+ - Any decent `~/.vimrc` should do
36
+
37
+ * There are so many great vim dotfiles in github repos.
38
+
39
+ * [NeoBundle][] is a very good start if you are new to Vim.
40
+
41
+ * If you like you can use [my dotvim][] which is based on the [NeoBundle][].
42
+
43
+ * Use any [vim colorschemes][] if not the `default` scheme will be used.
44
+
45
+ My personal favourite are [seoul256.vim][] and [Tomorrow-Theme][]
46
+
47
+ - Any valid file types that are supported by Vim will be shown proper color in the output.
48
+
49
+ * By default Vim comes with supported for major languages so you should see the proper syntax with color in the output.
50
+
51
+ * On newer language like [Elixir][], you may have to first install [vim-elixir][] to see the proper syntax in the output.
52
+ If this is not installed then you will get the output but will not have the beautiful color syntax.
53
+
54
+ ### Sample session
55
+
56
+ - Run with the sample fixture files
57
+
58
+ ```sh
59
+ vim_printer print -b test/fixtures/inputs -e rb java -r
60
+ ```
61
+
62
+ Will produce the file `output.tar.gz` with the following result on the screen.
63
+
64
+ ```
65
+ FYI: your options {:base_dir=>"test/fixtures/inputs/", :exts=>["rb", "java"], :non_exts=>[], :inc_words=>[], :exc_words=>[], :ignore_case=>true, :recursive=>true, :version=>false, :theme=>"default"}
66
+
67
+ FYI: process file 1 of 8 : test/fixtures/inputs/demo1.xxx.rb
68
+ FYI: process file 2 of 8 : test/fixtures/inputs/demo1.yyy.rb
69
+ FYI: process file 3 of 8 : test/fixtures/inputs/demo2.xxx.rb
70
+ FYI: process file 4 of 8 : test/fixtures/inputs/demo2.yyy.rb
71
+ FYI: process file 5 of 8 : test/fixtures/inputs/java/demo3.xxx.java
72
+ FYI: process file 6 of 8 : test/fixtures/inputs/java/demo3.yyy.java
73
+ FYI: process file 7 of 8 : test/fixtures/inputs/java/demo4.xxx.java
74
+ FYI: process file 8 of 8 : test/fixtures/inputs/java/demo4.yyy.java
75
+
76
+ Your result should be available at `output.tar.gz`
77
+
78
+ ```
79
+
80
+ ### Usage
81
+
82
+ - Install the gem for your version of ruby
83
+
84
+ e.g. for rbenv your session will be something like
85
+
86
+ ```sh
87
+ rbenv local 2.1.1 # or whatever the version of you ruby
88
+ rbenv rehash
89
+ gem install vim_printer
90
+ ```
91
+ - Print any files using the gem
92
+
93
+ ```sh
94
+ vim_printer
95
+ ```
96
+ - Print any files that you like using the simple command
97
+
98
+ The following command will print out all java, and ruby files recursively
99
+ using the `solarized` colorscheme.
100
+
101
+ ```sh
102
+ vim_printer print --base-dir ./test/fixtures \
103
+ --exts rb \
104
+ --theme solarized
105
+ ```
106
+
107
+ Your output will be saved to the default `output.tar.gz` in the directory where you run this command.
108
+ To see the output in your browser just type:
109
+
110
+ ```sh
111
+ mkdir -p ~/Desktop/vim_printer
112
+ mv output.tar.gz ~/Desktop/vim_printer
113
+ cd ~/Desktop/vim_printer
114
+ tar zxvf output.tar.gz
115
+ ```
116
+
117
+ - Print only files that contain the word `xxx` in the title
118
+
119
+ ```sh
120
+ vim_printer print --base-dir ./test/fixtures \
121
+ --exts java \
122
+ --theme solarized \
123
+ --n xxx
124
+ ```
125
+
126
+ - For help in using the gem just type `vim_printer` without any parameter
127
+ You should see something like the following:
128
+
129
+ ```
130
+ Usage:
131
+ vim_printer print [OPTIONS]
132
+
133
+ Options:
134
+ -b, [--base-dir=BASE_DIR] # Base directory
135
+ # Default: . (current directory)
136
+ -e, [--exts=one two three] # List of extensions to search for
137
+ -f, [--non-exts=one two three] # List of files without extension to search for
138
+ -n, [--inc-words=one two three] # List of words to be included in the result if any
139
+ -x, [--exc-words=one two three] # List of words to be excluded from the result if any
140
+ -i, [--ignore-case], [--no-ignore-case] # Match case insensitively
141
+ # Default: true
142
+ -r, [--recursive], [--no-recursive] # Search for files recursively
143
+ # Default: true
144
+ -v, [--version], [--no-version] # Display version information
145
+ -t, [--theme=THEME] # Vim colorscheme to use
146
+ # Default: default
147
+
148
+ Print the list of files
149
+ ```
150
+
151
+ ### Development/Testing
152
+
153
+ ```sh
154
+ git clone https://github.com/agilecreativity/vim_printer.git
155
+ cd vim_printer
156
+ bundle
157
+ # run default test
158
+ rake
159
+ ```
160
+ ### Known Issues
161
+
162
+ - Will be listed here if any.
163
+
164
+ ### Disclaimers
165
+
166
+ - This is still early release of the gem, I may make several changes to the API.
167
+ - If you find any issues please let me know.
168
+ - Pull request is always welcome.
169
+
170
+ ### Changelog
171
+
172
+ #### 0.0.1
173
+
174
+ - Initial release
175
+
176
+ ### Contributing
177
+
178
+ 1. Fork it
179
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
180
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
181
+ 4. Make sure that you add the tests and ensure that all tests are passed
182
+ 5. Push to the branch (`git push origin my-new-feature`)
183
+ 6. Create new Pull Request
184
+
185
+ [NeoBundle]: https://github.com/Shougo/neobundle.vim
186
+ [Vim]: https://www.vim.org
187
+ [my dotvim]: https://github.com/agilecreativity/dotvim
188
+ [Elixir]: http://elixir-lang.org
189
+ [vim-elixir]: https://github.com/elixir-lang/vim-elixir
190
+ [vim colorschemes]: https://github.com/flazz/vim-colorschemes/tree/master/colors
191
+ [seoul256.vim]: https://github.com/junegunn/seoul256.vim
192
+ [Tomorrow-theme]: https://github.com/ChrisKempson/Tomorrow-Theme
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'lib/vim_printer'
6
+ t.test_files = FileList['test/lib/vim_printer/test_*.rb']
7
+ t.verbose = true
8
+ end
9
+
10
+ task :default => :test
11
+
12
+ task :pry do
13
+ require 'pry'
14
+ require 'awesome_print'
15
+ require 'vim_printer'
16
+ include VimPrinter
17
+ ARGV.clear
18
+ Pry.start
19
+ end
data/bin/vim_printer ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/vim_printer'
3
+ include VimPrinter
4
+ VimPrinter::CLI.start(ARGV)
@@ -0,0 +1,119 @@
1
+ require 'code_lister'
2
+ require_relative '../vim_printer'
3
+
4
+ module VimPrinter
5
+
6
+ class CLI < CodeLister::BaseCLI
7
+
8
+ desc 'print', 'Print the list of files'
9
+
10
+ shared_options
11
+
12
+ method_option :theme,
13
+ aliases: "-t",
14
+ desc: "Vim colorscheme to use",
15
+ default: "default"
16
+ def print
17
+ opts = options.symbolize_keys
18
+ if opts[:version]
19
+ puts "You are using VimPrinter version #{VimPrinter::VERSION}"
20
+ exit
21
+ end
22
+ puts "FYI: your options #{opts}"
23
+ execute(opts)
24
+ end
25
+
26
+ desc "usage", "Display help screen"
27
+ def usage
28
+ puts <<-EOS
29
+ Usage:
30
+ vim_printer print
31
+
32
+ Options:
33
+ -b, [--base-dir=BASE_DIR] # Base directory
34
+ # Default: /home/bchoomnuan/Dropbox/spikes/vim_printer
35
+ -e, [--exts=one two three] # List of extensions to search for
36
+ -f, [--non-exts=one two three] # List of files without extension to search for
37
+ -n, [--inc-words=one two three] # List of words to be included in the result if any
38
+ -x, [--exc-words=one two three] # List of words to be excluded from the result if any
39
+ -i, [--ignore-case], [--no-ignore-case] # Match case insensitively
40
+ # Default: true
41
+ -r, [--recursive], [--no-recursive] # Search for files recursively
42
+ # Default: true
43
+ -v, [--version], [--no-version] # Display version information
44
+ -t, [--theme=THEME] # Vim colorscheme to use
45
+ # Default: default
46
+
47
+ Print the list of files
48
+ EOS
49
+ end
50
+
51
+ default_task :usage
52
+
53
+ private
54
+
55
+ # @param args [Hash<Symbol, Object>] options argument
56
+ def execute(options = {})
57
+
58
+ input_files = CodeLister.files(options)
59
+
60
+ if input_files.empty?
61
+ puts "No file found for your option: #{options}"
62
+ return
63
+ end
64
+ to_htmls(input_files, options)
65
+
66
+ # search for files that we created
67
+ generated_files = VimPrinter::Utility.find(options[:base_dir])
68
+
69
+ # tar.gzip them for user
70
+ VimPrinter::Utility.tar_gzip_files(generated_files, 'output.tar.gz')
71
+
72
+ # cleanup after ourself
73
+ VimPrinter::Utility.delete(generated_files)
74
+
75
+ # report the result
76
+ puts "Your result should be available at `output.tar.gz`"
77
+ end
78
+
79
+ # convert multiple files to 'html'
80
+ def to_htmls(files, options = {})
81
+ files.each_with_index do |file, index|
82
+ puts "FYI: process file #{index + 1} of #{files.size} : #{file}"
83
+ to_html(file, options)
84
+ end
85
+ end
86
+
87
+ def to_html(filename, options = {})
88
+ opts = {
89
+ theme: 'seoul256-light'
90
+ }.merge(options)
91
+
92
+ raise "Invalid input file #{filename}" unless File.exists?(filename)
93
+
94
+ # sensible argument, see :help :TOhtml (from Vim)
95
+ command = [
96
+ "vim",
97
+ "-E",
98
+ "-c 'let g:html_expand_tabs = 1'",
99
+ "-c 'let g:html_use_css = 1'",
100
+ "-c 'let g:html_no_progress = 1'"
101
+ ]
102
+
103
+ # set the colorscheme for the output
104
+ command.push("-c 'colorscheme #{opts[:theme]}'")
105
+
106
+ # closing arguments
107
+ args = [
108
+ "-c 'TOhtml'",
109
+ "-c 'w'",
110
+ "-c 'qa!'",
111
+ "#{filename}",
112
+ "> /dev/null"
113
+ ]
114
+
115
+ # Note: have to run as system only
116
+ system(command.concat(args).join(" "))
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,56 @@
1
+ class Hash
2
+
3
+ # File activesupport/lib/active_support/core_ext/hash/keys.rb
4
+ #
5
+ # hash = { name: 'Rob', age: '28' }
6
+ # hash.transform_keys{ |key| key.to_s.upcase }
7
+ # => { "NAME" => "Rob", "AGE" => "28" }
8
+ def transform_keys
9
+ result = {}
10
+ each_key do |key|
11
+ result[yield(key)] = self[key]
12
+ end
13
+ result
14
+ end
15
+
16
+ def transform_keys!(&block)
17
+ keys.each do |key|
18
+ value = delete(key)
19
+ self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value
20
+ end
21
+ self
22
+ end
23
+
24
+ # hash = { 'name' => 'Rob', 'age' => '28' }
25
+ # hash.symbolize_keys
26
+ # => { name: "Rob", age: "28" }
27
+ def symbolize_keys
28
+ transform_keys{ |key| key.to_sym rescue key }
29
+ end
30
+
31
+ # File activesupport/lib/active_support/core_ext/hash/keys.rb, line 135
32
+ def symbolize_keys!
33
+ transform_keys!{ |key| key.to_sym rescue key }
34
+ end
35
+
36
+ # Merges the caller into +other_hash+. For example,
37
+ #
38
+ # options = options.reverse_merge(size: 25, velocity: 10)
39
+ #
40
+ # is equivalent to
41
+ #
42
+ # options = { size: 25, velocity: 10 }.merge(options)
43
+ #
44
+ # This is particularly useful for initializing an options hash
45
+ # with default values.
46
+ def reverse_merge(other_hash)
47
+ other_hash.merge(self)
48
+ end
49
+
50
+ # Destructive +reverse_merge+.
51
+ def reverse_merge!(other_hash)
52
+ # right wins if there is no left
53
+ merge!(other_hash) { |key,left,right| left }
54
+ end
55
+
56
+ end
@@ -0,0 +1,10 @@
1
+ require 'logger'
2
+ module VimPrinter
3
+ class << self
4
+ attr_writer :logger
5
+ # @return [Logger] the Logger for the project
6
+ def logger
7
+ @logger ||= Logger.new STDOUT
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,87 @@
1
+ require 'zlib'
2
+ require 'stringio'
3
+ require 'find'
4
+ require 'fileutils'
5
+ require 'archive/tar/minitar'
6
+
7
+ module VimPrinter
8
+
9
+ include Archive::Tar
10
+ include Archive::Tar::Minitar
11
+
12
+ module Utility
13
+
14
+ # @todo use me when you have to!
15
+ CustomError = Class.new(StandardError)
16
+
17
+ class << self
18
+
19
+ # Find list of files based on certain extension
20
+ # @param [String] bas_dir the starting directory
21
+ # @param [String] extension the file extension to search for
22
+ #
23
+ # @return [Array<String>] list of matching files or empty list
24
+ def find(base_dir, extension = 'xhtml')
25
+ file_paths = []
26
+ Find.find(base_dir) do |path|
27
+ file_paths << path if path =~ /.*\.#{extension}$/
28
+ end
29
+ file_paths || []
30
+ end
31
+
32
+ # Tar and gzip list of files
33
+ #
34
+ # @param [Array<String>] files list of input files
35
+ # @param [String] output the output file in .tar.gz format
36
+ def tar_gzip_files(files, output = 'output.tar.gz')
37
+ begin
38
+ sgz = Zlib::GzipWriter.new(File.open(output, 'wb'))
39
+ tar = Minitar::Output.new(sgz)
40
+ files.each do |file|
41
+ Minitar.pack_file(file, tar)
42
+ end
43
+ ensure
44
+ # Closes both tar and sgz.
45
+ tar.close unless tar.nil?
46
+ tar = nil
47
+ end
48
+ end
49
+
50
+ # Delete the files from the given list
51
+ def delete(files)
52
+ # Note: should we remove the files and be done with it?
53
+ files.each do |file|
54
+ #puts "FYI: about to delete file #{file}"
55
+ FileUtils.rm_rf(file)
56
+ end
57
+ end
58
+
59
+ # Add suffix to each extensions
60
+ #
61
+ # @param [Array<String>] extension list of extension
62
+ # @param [String] suffix the suffix string
63
+ #
64
+ # @return [Array<String>] new list with the suffix added to each element
65
+ def add_suffix(extensions = %w(rb pdf), suffix)
66
+ extensions.map {|e| "#{e}.#{suffix}" }
67
+ end
68
+
69
+ # Time the operation before and after the operation for tuning purpose
70
+ def time
71
+ beg_time = Time.now
72
+ yield
73
+ end_time = Time.now
74
+ end_time - beg_time
75
+ end
76
+
77
+ end
78
+ end
79
+ end
80
+
81
+ if __FILE__ == $0
82
+ include VimPrinter::Utility
83
+ include Archive::Tar
84
+ include Archive::Tar::Minitar
85
+ files = VimPrinter::Utility.find('test/fixtures/inputs')
86
+ VimPrinter::Utility.tar_gzip_files(files, 'test/fixtures/output.tar.gz')
87
+ end
@@ -0,0 +1,3 @@
1
+ module VimPrinter
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,7 @@
1
+ require 'thor'
2
+ require 'code_lister'
3
+ require_relative 'vim_printer/core_ext/hash'
4
+ require_relative 'vim_printer/version'
5
+ require_relative 'vim_printer/logger'
6
+ require_relative 'vim_printer/utility'
7
+ require_relative 'vim_printer/cli'
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/demo1.xxx.rb
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/demo1.yyy.rb
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/demo2.xxx.rb
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/demo2.yyy.rb
@@ -0,0 +1 @@
1
+ // file: test/fixtures/java/demo3.xxx.java
@@ -0,0 +1 @@
1
+ // file: test/fixtures/java/demo3.yyy.java
@@ -0,0 +1 @@
1
+ // file: test/fixtures/java/demo4.xxx.java
@@ -0,0 +1 @@
1
+ // file: test/fixtures/java/demo4.yyy.java
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/noexts1_zzz
@@ -0,0 +1 @@
1
+ # file: spec/fixtures/noexts2_zzz