cheatorious 0.1.1 → 0.2.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.
data/CHANGELOG.md ADDED
@@ -0,0 +1,47 @@
1
+ #v0.2.0 (Dec/29 2011 09:59 -0200 by Luis Cipriani)
2
+
3
+ Changes:
4
+
5
+ - Changed Writer#header and constructor method signature
6
+ - Command line interface parser now is done by Thor
7
+
8
+ Features:
9
+
10
+ - Added the following commands to the command line interface
11
+ - list
12
+ - import
13
+ - view
14
+ - search
15
+ - writers
16
+ - alias
17
+ - All the settings and compiled cheatsheets are saved to .cheatorious home folder
18
+ - Provided reverse, section, sensitive search filters
19
+ - Added simple_vim sample by default to every installation
20
+
21
+ #v0.1.1 (2011-12-12)
22
+
23
+ Bugfixes:
24
+
25
+ - Configured executables in the gemspec file
26
+
27
+ # v0.1.0 (2011-12-12)
28
+
29
+ Features:
30
+
31
+ - basic gem structure and initial implementation of DSL
32
+ - dsl now support keyboard key settings
33
+ - maintaining a reverse index for other types of searches
34
+ - Ruby DSL to create your cheatsheets
35
+ - Command-line interface
36
+ - input the cheatsheet file
37
+ - full listing
38
+ - search by keyword
39
+ - Compilation
40
+ - marshal serialization
41
+ - base64 serialization
42
+ - serialized types verification
43
+ - Writers (output formating)
44
+ - simple text ouptut
45
+
46
+ ----
47
+ _this cheatsheet is generated by [step-up](https://github.com/kawamanza/step-up)_
data/GEM_VERSION CHANGED
@@ -1 +1 @@
1
- v0.1.1
1
+ v0.2.0+1
data/README.md CHANGED
@@ -25,7 +25,7 @@ Create a file and use the following syntax, shown in the example below:
25
25
  author "Luis Cipriani", "github.com/lfcipriani"
26
26
  version "1.0.0"
27
27
 
28
- # you can configure some keyboard keys variables
28
+ # you can configure some keyboard keys variables, you can change it later to fit your personal preferences
29
29
  key :control, "^"
30
30
  key :esc , "<esc>"
31
31
  key :leader , ","
@@ -53,48 +53,84 @@ Create a file and use the following syntax, shown in the example below:
53
53
  section "Files" do
54
54
  __ "Open file", ":e"
55
55
 
56
- # you can go infinitely deep with sections
56
+ # you can go infinitely deep with sections (seriously)
57
57
  section "Saving" do
58
58
  __ "Save file", ":w"
59
59
  end
60
60
  end
61
61
  end
62
62
 
63
- ## Compiling your cheatsheet ##
64
-
65
- In this alpha version, the compilation is transparently done by cheatorious, but in future versions you'll be able to:
66
-
67
- * serialize your cheatsheet for exporting
68
- * export in Base64 to make the search faster
69
- * export a standalone executable script
70
-
71
63
  ## Using cheatorious ##
72
64
 
73
65
  The CLI usage goes as follows:
74
66
 
75
- $ cheatorious cheatsheet_file [keyword]
67
+ $ cheatorious # get help
68
+ $ cheatorious help [TASK] # get help for a specific task
69
+ $ cheatorious import FILE # import a cheatsheet description FILE (example above)
70
+ $ cheatorious list # lists the available cheatsheets
71
+ $ cheatorious view CHEATSHEET [OPTIONS] # view a CHEATSHEET
76
72
 
77
- Where *cheatsheet_file* is the file you created above using the ruby DSL and a optional *keyword* if you want to filter the cheatsheet (case insensitive). If no keyword is passed, it will return whole cheatsheet.
73
+ To search on your cheatsheets:
74
+
75
+ $ cheatorious help search
76
+ Usage:
77
+ cheatorious search CHEATSHEET [KEYWORD] [OPTIONS]
78
78
 
79
- I'm working to let this usage even more simple and fast.
79
+ Options:
80
+ -s, [--section] # matches KEYWORD only on section names, returning all entries and sections inside it.
81
+ -r, [--reverse] # reverse means to search only the values of a cheatsheet (and not entries, as usual). For example, search by shortcuts.
82
+ -S, [--sensitive] # case sensitive search (insensitive is default).
83
+ -w, [--writer=WRITER] # writer to use for the output. If not set, uses the default.
80
84
 
81
- ## TODO ##
85
+ search for KEYWORD in CHEATSHEET entries only.
86
+ The CHEATSHEET variable could be a name (for imported cheatsheets) or a file that describes a cheatsheet.
87
+ Omit KEYWORD to view the full cheatsheet.
88
+
89
+ If you are tired to type everything above to do a simple search, use the alias command:
90
+
91
+ $ bin/cheatorious help alias
92
+ Usage:
93
+ cheatorious alias NAME CHEATSHEET
94
+
95
+ return a shell alias command with NAME for easy access to searching a CHEATSHEET.
96
+ The CHEATSHEET variable must be an imported cheatsheet.
97
+ Example: cheatorious alias svim simple_vim >> ~/.bashrc
98
+ next time just use: svim KEYWORD [OPTIONS]
99
+
100
+ The command will just show the command, it's up to you to decide where to put it.
82
101
 
83
- * search by sections
84
- * reverse search
85
- * standalone script generation
86
- * case sensitive search
87
- * better ouput layout, colored
88
- * more features in command line
89
- * other output writers
102
+ ## Writers ##
90
103
 
91
- ## Tips ##
104
+ Cheatorious has a default Text writer to give a fairly nice output for your cheatsheet. Since we can have multiple writers avaiable, you can list and set a default writer through the command *writers*:
105
+
106
+ $ bin/cheatorious help writers
107
+ Usage:
108
+ cheatorious writers [OPTIONS]
109
+
110
+ Options:
111
+ -d, [--default=DEFAULT] # set a default writer for next searches.
112
+
113
+ lists the available writers or set a default
114
+
115
+ I'll work to provide more options of output as soon as possible (markdown, colored, HTML, etc), but you can also contribute writing your own writers and sending a pull request to this project. Check the examples folder to see a Writer sample, you just need to implement that interface.
116
+
117
+ ## Tips to improve the experience! ##
92
118
 
93
119
  * In Macs, cheatorious is very powerful if used with [DTerm](http://decimus.net/DTerm)
120
+ * Create aliases to save typings in the cheatsheets you use more
121
+ * Sync your cheatsheets with Dropbox by creating a symlink for the `~/.cheatorious` folder
122
+
123
+ ## TODO ##
124
+
125
+ * standalone script generation (works indenpendently of cheatorious being installed or not)
126
+ * more writers, better ouput layout, colored
127
+ * more cheatsheets
94
128
 
95
129
  ## Contributing ##
96
130
 
97
- You can contribute in the Core, with Writers or Cheatsheets, feel free.
131
+ If you have cheatsheets, share with us at [cheatorious cheatsheet repository](https://github.com/lfcipriani/cheatorious-cheatsheets).
132
+
133
+ You can also contribute in the Core or Writers, feel free to:
98
134
 
99
135
  * Fork
100
136
  * Implement tests
data/bin/cheatorious CHANGED
@@ -1,19 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- @cheatsheet_model = nil
3
- def cheatsheet_for(name, &block)
4
- @cheatsheet_model = Cheatorious::CheatSheet.compile(name, &block)
5
- end
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/cheatorious')
6
3
 
7
- if ARGV.size > 0
8
- require File.expand_path(File.dirname(__FILE__) + '/../lib/cheatorious')
9
-
10
- if File.exist?(ARGV[0])
11
- load ARGV[0]
12
- result = Cheatorious::Search.execute(@cheatsheet_model, ARGV[1] || "")
13
- puts result
14
- else
15
- puts "File not found: #{ARGV[0]}"
16
- end
17
- else
18
- puts "Usage: cheatorious cheatsheet_file [keyword]"
19
- end
4
+ Cheatorious::CLI.start
Binary file
File without changes
@@ -0,0 +1,70 @@
1
+ module Cheatorious
2
+ module Writer
3
+ # This is an example of a Writer
4
+ #
5
+ # To implement your own Writer, just create a class inside
6
+ # Cheatorious::Writer module and implement the interface
7
+ # represented by the public methods below.
8
+ class WriterSample
9
+ def initialize
10
+ @section_stack = []
11
+ @result = ""
12
+ end
13
+
14
+ def header(name, author = "", version = "", description = "")
15
+ line
16
+ line "-" * 80
17
+ line "#{name} (#{version})"
18
+ line
19
+ line "Author : #{author[0]} (#{author[1]})"
20
+ line "Description: #{description}"
21
+ line "-" * 80
22
+ line
23
+ end
24
+
25
+ def search_header(query, results_count, options)
26
+ search_type = options.keys.join(", ")
27
+ search_type += " " if search_type.size > 0
28
+ line
29
+ line "Your #{search_type}search for '#{query}' returned #{results_count} #{results_count > 1 ? "results" : "result"}:" if results_count != 0
30
+ line "Your #{search_type}search for '#{query}' doesn't returned any result. Try with another keyword." if results_count == 0
31
+ line
32
+ end
33
+
34
+ def footer
35
+ line
36
+ line "-" * 80
37
+ line "generated by Cheatorious (https://github.com/lfcipriani/cheatorious)"
38
+ end
39
+
40
+ def section_start(section)
41
+ @section_stack.push(section)
42
+ line indentation("-") + " #{section}"
43
+ end
44
+
45
+ def section_end
46
+ @section_stack.pop
47
+ end
48
+
49
+ def entry(name, *values)
50
+ e = "#{indentation(" ")} - #{name}: "
51
+ e << values.join(", ")
52
+ line e
53
+ end
54
+
55
+ def result
56
+ @result
57
+ end
58
+
59
+ private
60
+
61
+ def line(str = "")
62
+ @result += str + "\n"
63
+ end
64
+
65
+ def indentation(char)
66
+ char * 2 * @section_stack.size
67
+ end
68
+ end
69
+ end
70
+ end
data/lib/cheatorious.rb CHANGED
@@ -5,8 +5,18 @@ $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__))
5
5
  require "rubygems"
6
6
  require "bundler/setup"
7
7
 
8
+ # Adding Dir.home method if it's not available
9
+ unless Dir.respond_to?(:home)
10
+ class Dir
11
+ def self.home
12
+ File.expand_path(File.join("~"))
13
+ end
14
+ end
15
+ end
16
+
8
17
  # Gem requirements
9
18
  module Cheatorious
19
+ autoload :CLI , "cheatorious/cli"
10
20
  autoload :CheatSheet, "cheatorious/cheatsheet"
11
21
  autoload :Utils , "cheatorious/utils"
12
22
  autoload :Search , "cheatorious/search"
@@ -17,8 +17,7 @@ module Cheatorious
17
17
  @cheat_hash = {
18
18
  :info => { :name => name },
19
19
  :cheatsheet => {
20
- :root => [],
21
- :reverse => {}
20
+ :root => []
22
21
  }
23
22
  }
24
23
  @current_section = @cheat_hash[:cheatsheet][:root]
@@ -70,12 +69,6 @@ module Cheatorious
70
69
 
71
70
  values.each do |v|
72
71
  new_entry << v
73
-
74
- reverse_entry = {
75
- :name => name,
76
- :section => @stack.dup
77
- }
78
- reverse_index.key?(v) ? reverse_index[v] << reverse_entry : reverse_index[v] = [reverse_entry]
79
72
  end
80
73
 
81
74
  @current_section << new_entry
@@ -101,10 +94,6 @@ module Cheatorious
101
94
  def sheet
102
95
  @cheat_hash[:cheatsheet]
103
96
  end
104
-
105
- def reverse_index
106
- @cheat_hash[:cheatsheet][:reverse]
107
- end
108
-
97
+
109
98
  end
110
99
  end
@@ -0,0 +1,130 @@
1
+ require 'thor'
2
+
3
+ module Cheatorious
4
+ module DslExecutor
5
+ def self.cheatsheet_for(name, &block)
6
+ Cheatorious::CheatSheet.compile(name, @output, &block)
7
+ end
8
+ end
9
+
10
+ class CLI < Thor
11
+ include Thor::Actions
12
+
13
+ desc "list", "lists the available cheatsheets. See 'import' command."
14
+ def list
15
+ ensure_workspace_exist
16
+ puts (cheatsheet_list.empty? ? "You don't have imported cheatsheets. See 'import' command." : "You have #{cheatsheet_list.size} cheatsheet(s):")
17
+ puts cheatsheet_list.join("\n")
18
+ end
19
+
20
+ desc "import FILE", "import a cheatsheet description FILE.\nCheck https://github.com/lfcipriani/cheatorious to learn how to create your own cheatsheets."
21
+ def import(file)
22
+ ensure_workspace_exist
23
+ name = File.basename(file, ".rb")
24
+ return if cheatsheet_list.include?(name) &&
25
+ !yes?("Do you want to override the existent #{name} cheatsheet? (y/n)")
26
+ if File.exist?(file)
27
+ source = File.read(file)
28
+ bytes = DslExecutor.module_eval("@output = :bytes\n"+source)
29
+ File.open(File.join(workspace_path, "compiled", name), 'w') {|f| f.write(bytes) }
30
+ File.open(File.join(workspace_path, "originals", name + ".rb"), 'w') {|f| f.write(source) }
31
+ puts "Cheatsheet imported successfuly! Try 'cheatorious view #{name}'\nThe original cheatsheet file was copied to #{File.join(workspace_path, "originals", name + ".rb")}"
32
+ else
33
+ puts "The specified file doesn't exist: #{file}"
34
+ end
35
+ end
36
+
37
+ desc "view CHEATSHEET [OPTIONS]", "view a CHEATSHEET.\nThe CHEATSHEET variable could be a name (for imported cheatsheets) or a file that describes a cheatsheet."
38
+ method_option :writer, :aliases => "-w", :type => :string, :desc => "writer to use for the output. If not set, uses the default."
39
+ def view(cheatsheet)
40
+ invoke :search
41
+ end
42
+
43
+ desc "search CHEATSHEET [KEYWORD] [OPTIONS]", "search for KEYWORD in CHEATSHEET entries only.\nThe CHEATSHEET variable could be a name (for imported cheatsheets) or a file that describes a cheatsheet.\nOmit KEYWORD to view the full cheatsheet."
44
+ method_option :section, :aliases => "-s", :type => :boolean, :desc => "matches KEYWORD only on section names, returning all entries and sections inside it."
45
+ method_option :reverse, :aliases => "-r", :type => :boolean, :desc => "reverse means to search only the values of a cheatsheet (and not entries, as usual). For example, search by shortcuts."
46
+ method_option :sensitive, :aliases => "-S", :type => :boolean, :desc => "case sensitive search (insensitive is default)."
47
+ method_option :writer, :aliases => "-w", :type => :string, :desc => "writer to use for the output. If not set, uses the default."
48
+ def search(cheatsheet, keyword = "")
49
+ ensure_workspace_exist
50
+ writer = options["writer"] ? writer_for(options["writer"]) : default_writer
51
+ model = nil
52
+ if cheatsheet_list.include?(cheatsheet)
53
+ model = File.read(File.join(workspace_path, "compiled", cheatsheet))
54
+ elsif File.exist?(cheatsheet)
55
+ model = DslExecutor.module_eval("@output = nil\n" + File.read(cheatsheet))
56
+ end
57
+ if model
58
+ puts Cheatorious::Search.execute(model, keyword, writer, options.dup)
59
+ else
60
+ puts "Invalid cheatsheet name or file name: #{cheatsheet}"
61
+ end
62
+ end
63
+
64
+ desc "writers [OPTIONS]", "lists the available writers or set a default"
65
+ method_option :default, :aliases => "-d", :type => :string, :desc => "set a default writer for next searches."
66
+ def writers
67
+ ensure_workspace_exist
68
+ if options["default"]
69
+ if Cheatorious::Writer.constants.map {|c| c.to_s}.include?(options["default"])
70
+ config = YAML.load(File.open(File.join(workspace_path, "config")))
71
+ config["default_writer"] = options["default"]
72
+ File.open(File.join(workspace_path, "config"), "w") {|f| f.write(config.to_yaml) }
73
+ puts "The default writer now is #{options["default"]}"
74
+ else
75
+ puts "Invalid writer name, use 'cheatorious writers' to choose one from the available."
76
+ end
77
+ else
78
+ puts "The following writers are available:\n"
79
+ dw = default_writer.to_s
80
+ puts Cheatorious::Writer.constants.map {|w| (dw.end_with?(w.to_s) ? w.to_s + " (default)" : w.to_s) }.join("\n")
81
+ puts "\nUse -d option to set a default writer."
82
+ end
83
+ end
84
+
85
+ desc "alias NAME CHEATSHEET", "return a shell alias command with NAME for easy access to searching a CHEATSHEET.\nThe CHEATSHEET variable must be an imported cheatsheet.\nExample: cheatorious alias svim simple_vim >> ~/.bashrc\n next time just use: svim KEYWORD [OPTIONS]"
86
+ def alias(name, cheatsheet)
87
+ ensure_workspace_exist
88
+ if cheatsheet_list.include?(cheatsheet)
89
+ puts "alias #{name}='cheatorious search #{cheatsheet}'"
90
+ else
91
+ puts "Invalid cheatsheet name: #{cheatsheet}"
92
+ end
93
+ end
94
+
95
+ private
96
+
97
+ def cheatsheet_list
98
+ Dir[File.join(workspace_path, "compiled", "*")].map {|c| File.basename(c)}
99
+ end
100
+
101
+ def writer_for(constant)
102
+ Cheatorious::Writer.const_get(constant)
103
+ end
104
+
105
+ def default_writer
106
+ writer_for(YAML.load(File.open(File.join(workspace_path, "config")))["default_writer"])
107
+ end
108
+
109
+ def ensure_workspace_exist
110
+ unless File.directory?(workspace_path)
111
+ Dir.mkdir(workspace_path)
112
+ end
113
+ unless File.exist?(File.join(workspace_path, "config"))
114
+ create_file File.join(workspace_path, "config"), "default_writer: Text\n", :verbose => false
115
+ end
116
+ unless File.directory?(File.join(workspace_path, "compiled"))
117
+ Dir.mkdir(File.join(workspace_path, "compiled"))
118
+ FileUtils.cp(File.expand_path(File.join(__FILE__, "..", "..", "..", "examples", "simple_vim")), File.join(workspace_path, "compiled"))
119
+ end
120
+ unless File.directory?(File.join(workspace_path, "originals"))
121
+ Dir.mkdir(File.join(workspace_path, "originals"))
122
+ FileUtils.cp(File.expand_path(File.join(__FILE__, "..", "..", "..", "examples", "simple_vim.rb")), File.join(workspace_path, "originals"))
123
+ end
124
+ end
125
+
126
+ def workspace_path
127
+ @workspace ||= File.join(Dir.home, ".cheatorious")
128
+ end
129
+ end
130
+ end
@@ -14,17 +14,20 @@ module Cheatorious
14
14
  end
15
15
 
16
16
  def execute(query = "", writer = Writer::Text, options = {})
17
- options[:print] = query.empty? ? :full : :partial
17
+ info = @cheat_model[:info]
18
+ options.delete("reverse") if options["section"] && options["reverse"]
18
19
 
20
+ # Filtering
19
21
  filtered = @cheat_model[:cheatsheet][:root].dup
20
- unless print_full?(options)
22
+ unless print_full?(query)
21
23
  filtered, results_count = depth_search(query, filtered, options)
22
24
  end
23
25
 
24
- w = writer.new(@cheat_model[:info])
25
- print_full?(options) ? w.header : w.search_header(query, results_count, "")
26
+ # Writing
27
+ w = writer.new
28
+ print_full?(query) ? w.header(info[:name], info[:author], info[:version], info[:description]) : w.search_header(query, results_count, options)
26
29
  write_contents(filtered, w, options)
27
- w.footer if print_full?(options)
30
+ w.footer if print_full?(query)
28
31
 
29
32
  return w.result
30
33
  end
@@ -33,21 +36,43 @@ module Cheatorious
33
36
 
34
37
  def depth_search(query, section, options)
35
38
  match_count = 0
39
+
36
40
  result = section.select do |item|
41
+
37
42
  if item.kind_of?(Array) #entry
38
- name = item[0]
39
- result = match?(query, name)
40
- match_count += 1 if result
41
- result
43
+ unless options["section"]
44
+ name = item[0]
45
+ matched = false
46
+ if options["reverse"]
47
+ item[1..-1].each do |value|
48
+ matched = match?(query, value, options["sensitive"])
49
+ break if matched
50
+ end
51
+ else
52
+ matched = match?(query, name, options["sensitive"])
53
+ end
54
+ match_count += 1 if matched
55
+ matched
56
+ else
57
+ false
58
+ end
59
+
42
60
  elsif item.kind_of?(Hash) #section
43
61
  name = item.keys.first
44
- item[name], count = depth_search(query, item[name], options)
62
+ if options["section"] && match?(query, name, options["sensitive"])
63
+ count = 1
64
+ else
65
+ item[name], count = depth_search(query, item[name], options)
66
+ end
45
67
  match_count += count
46
68
  item[name].size > 0
69
+
47
70
  else
48
71
  false
49
72
  end
73
+
50
74
  end
75
+
51
76
  return result, match_count
52
77
  end
53
78
 
@@ -65,12 +90,12 @@ module Cheatorious
65
90
  end
66
91
  end
67
92
 
68
- def match?(query, name)
69
- not name.downcase.index(query.downcase).nil?
93
+ def match?(query, name, sensitive)
94
+ !(Regexp.new(Regexp.escape(query), (sensitive ? 0 : Regexp::IGNORECASE)) =~ name).nil?
70
95
  end
71
96
 
72
- def print_full?(options)
73
- options[:print] == :full
97
+ def print_full?(query)
98
+ query.empty?
74
99
  end
75
100
 
76
101
  end
@@ -1,27 +1,28 @@
1
1
  module Cheatorious
2
2
  module Writer
3
3
  class Text
4
- def initialize(cheatsheet_info = {})
5
- @info = cheatsheet_info
4
+ def initialize
6
5
  @section_stack = []
7
6
  @result = ""
8
7
  end
9
8
 
10
- def header
9
+ def header(name, author = "", version = "", description = "")
11
10
  line
12
11
  line "-" * 80
13
- line "#{@info[:name]} (#{@info[:version]})"
12
+ line "#{name} (#{version})"
14
13
  line
15
- line "Author : #{@info[:author][0]} (#{@info[:author][1]})"
16
- line "Description: #{@info[:description]}"
14
+ line "Author : #{author[0]} (#{author[1]})"
15
+ line "Description: #{description}"
17
16
  line "-" * 80
18
17
  line
19
18
  end
20
19
 
21
- def search_header(query, results_count, query_type)
20
+ def search_header(query, results_count, options)
21
+ search_type = options.keys.join(", ")
22
+ search_type += " " if search_type.size > 0
22
23
  line
23
- line "Your search for '#{query}' returned #{results_count} #{results_count > 1 ? "entries" : "entry"}:" if results_count != 0
24
- line "Your search for '#{query}' doesn't returned any entry. Try with another keyword." if results_count == 0
24
+ line "Your #{search_type}search for '#{query}' returned #{results_count} #{results_count > 1 ? "results" : "result"}:" if results_count != 0
25
+ line "Your #{search_type}search for '#{query}' doesn't returned any result. Try with another keyword." if results_count == 0
25
26
  line
26
27
  end
27
28
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cheatorious
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-12 00:00:00.000000000Z
12
+ date: 2011-12-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: step-up
16
- requirement: &2152241560 !ruby/object:Gem::Requirement
16
+ requirement: &2152693740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152241560
24
+ version_requirements: *2152693740
25
25
  description:
26
26
  email: lfcipriani@gmail.com
27
27
  executables:
@@ -30,20 +30,23 @@ extensions: []
30
30
  extra_rdoc_files: []
31
31
  files:
32
32
  - .travis.yml
33
+ - CHANGELOG.md
33
34
  - LICENSE
34
35
  - README.md
35
36
  - bin/cheatorious
36
- - bin/vim_example.rb
37
37
  - cheatorious.gemspec
38
+ - examples/simple_vim
39
+ - examples/simple_vim.rb
40
+ - examples/writer_sample.rb
38
41
  - lib/cheatorious.rb
39
42
  - lib/cheatorious/.gitkeep
40
43
  - lib/cheatorious/cheatsheet.rb
44
+ - lib/cheatorious/cli.rb
41
45
  - lib/cheatorious/search.rb
42
46
  - lib/cheatorious/utils.rb
43
47
  - lib/cheatorious/version.rb
44
48
  - lib/cheatorious/writer.rb
45
49
  - lib/cheatorious/writer/text.rb
46
- - lib/tasks/task_sample.rake
47
50
  - GEM_VERSION
48
51
  homepage: https://github.com/abril/cheatorious
49
52
  licenses: []
@@ -59,7 +62,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
59
62
  version: '0'
60
63
  segments:
61
64
  - 0
62
- hash: 4020292091748225162
65
+ hash: 3692149591727871031
63
66
  required_rubygems_version: !ruby/object:Gem::Requirement
64
67
  none: false
65
68
  requirements:
@@ -1,7 +0,0 @@
1
- # encoding: UTF-8
2
- namespace :gem_name do
3
- desc 'task description'
4
- task :utils => :environment do
5
- # this task loads up the gem environment
6
- end
7
- end