Class: Spellr::Language
- Inherits:
-
Object
- Object
- Spellr::Language
- Defined in:
- lib/spellr/language.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #addable_wordlists ⇒ Object
- #all_wordlist_paths ⇒ Object
- #config_wordlists ⇒ Object
- #gem_wordlist ⇒ Object
- #generate_wordlist ⇒ Object
- #generated_project_wordlist ⇒ Object
-
#initialize(name, wordlists: [], generate: nil, only: [], description: '', hashbangs: []) ⇒ Language
constructor
rubocop:disable Metrics/ParameterLists.
- #matches?(file) ⇒ Boolean
- #project_wordlist ⇒ Object
- #wordlists ⇒ Object
Constructor Details
#initialize(name, wordlists: [], generate: nil, only: [], description: '', hashbangs: []) ⇒ Language
rubocop:disable Metrics/ParameterLists
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/spellr/language.rb', line 9 def initialize(name, # rubocop:disable Metrics/ParameterLists wordlists: [], generate: nil, only: [], description: '', hashbangs: []) @name = name @description = description @generate = generate @wordlist_paths = wordlists @only = only @hashbangs = hashbangs end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/spellr/language.rb', line 7 def name @name end |
Instance Method Details
#addable_wordlists ⇒ Object
58 59 60 |
# File 'lib/spellr/language.rb', line 58 def addable_wordlists ((config_wordlists - default_wordlists) + [project_wordlist]).uniq(&:path) end |
#all_wordlist_paths ⇒ Object
35 36 37 |
# File 'lib/spellr/language.rb', line 35 def all_wordlist_paths @wordlist_paths + default_wordlists.map(&:path) end |
#config_wordlists ⇒ Object
31 32 33 |
# File 'lib/spellr/language.rb', line 31 def config_wordlists @config_wordlists ||= @wordlist_paths.map(&Spellr::Wordlist.method(:new)) end |
#gem_wordlist ⇒ Object
62 63 64 65 66 |
# File 'lib/spellr/language.rb', line 62 def gem_wordlist @gem_wordlist ||= Spellr::Wordlist.new( Pathname.new(__dir__).parent.parent.join('wordlists', "#{name}.txt") ) end |
#generate_wordlist ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/spellr/language.rb', line 46 def generate_wordlist return [] unless generate require_relative 'cli' require 'shellwords' warn "Generating wordlist for #{name}" Spellr::CLI.new(generate.shellsplit) config_wordlists + default_wordlists end |
#generated_project_wordlist ⇒ Object
75 76 77 78 79 |
# File 'lib/spellr/language.rb', line 75 def generated_project_wordlist @generated_project_wordlist ||= Spellr::Wordlist.new( Pathname.pwd.join('.spellr_wordlists', 'generated', "#{name}.txt") ) end |
#matches?(file) ⇒ Boolean
23 24 25 26 27 28 29 |
# File 'lib/spellr/language.rb', line 23 def matches?(file) return true if @only.empty? file = Spellr::File.wrap(file) return true if @only.any? { |o| file.fnmatch?(o) } return true if file.hashbang && @hashbangs.any? { |h| file.hashbang.include?(h) } end |
#project_wordlist ⇒ Object
68 69 70 71 72 73 |
# File 'lib/spellr/language.rb', line 68 def project_wordlist @project_wordlist ||= Spellr::Wordlist.new( Pathname.pwd.join('.spellr_wordlists', "#{name}.txt"), name: name ) end |
#wordlists ⇒ Object
39 40 41 42 43 44 |
# File 'lib/spellr/language.rb', line 39 def wordlists w = config_wordlists + default_wordlists.select(&:exist?) return generate_wordlist if w.empty? w end |