Module: Lexdrill::Workbooks
- Defined in:
- lib/lexdrill/workbooks.rb
Overview
Global list of known Google Sheets workbooks (name => spreadsheet id),
which one is currently active, and — per workbook — which tab is
currently active within it. Lives at ~/.drill/workbooks.json. Names are
the spreadsheet's own title (see drill wb add), not chosen by hand.
Constant Summary collapse
Class Method Summary collapse
- .add(name, spreadsheet_id) ⇒ Object
- .current_id ⇒ Object
- .current_name ⇒ Object
- .current_sheet ⇒ Object
- .current_sheet_id ⇒ Object
- .current_url ⇒ Object
- .extract_id(url) ⇒ Object
- .names ⇒ Object
- .remove(name) ⇒ Object
- .set_current_sheet(sheet_name, sheet_id) ⇒ Object
- .url_for(name) ⇒ Object
- .use(name) ⇒ Object
Class Method Details
.add(name, spreadsheet_id) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/lexdrill/workbooks.rb', line 21 def self.add(name, spreadsheet_id) data = load data["workbooks"][name] = { "id" => spreadsheet_id } data["current"] ||= name save(data) end |
.current_id ⇒ Object
50 51 52 |
# File 'lib/lexdrill/workbooks.rb', line 50 def self.current_id current_entry&.fetch("id") end |
.current_name ⇒ Object
46 47 48 |
# File 'lib/lexdrill/workbooks.rb', line 46 def self.current_name load["current"] end |
.current_sheet ⇒ Object
77 78 79 |
# File 'lib/lexdrill/workbooks.rb', line 77 def self.current_sheet current_entry&.[]("current_sheet") end |
.current_sheet_id ⇒ Object
81 82 83 |
# File 'lib/lexdrill/workbooks.rb', line 81 def self.current_sheet_id current_entry&.[]("current_sheet_id") end |
.current_url ⇒ Object
59 60 61 62 |
# File 'lib/lexdrill/workbooks.rb', line 59 def self.current_url name = current_name name && url_for(name) end |
.extract_id(url) ⇒ Object
13 14 15 |
# File 'lib/lexdrill/workbooks.rb', line 13 def self.extract_id(url) url[URL_PATTERN, 1] end |
.names ⇒ Object
17 18 19 |
# File 'lib/lexdrill/workbooks.rb', line 17 def self.names load.fetch("workbooks").keys end |
.remove(name) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/lexdrill/workbooks.rb', line 28 def self.remove(name) data = load return false unless data["workbooks"].delete(name) data["current"] = nil if data["current"] == name save(data) true end |
.set_current_sheet(sheet_name, sheet_id) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/lexdrill/workbooks.rb', line 64 def self.set_current_sheet(sheet_name, sheet_id) data = load workbooks = data["workbooks"] name = data["current"] return false unless name && workbooks.key?(name) entry = workbooks[name] entry["current_sheet"] = sheet_name entry["current_sheet_id"] = sheet_id save(data) true end |
.url_for(name) ⇒ Object
54 55 56 57 |
# File 'lib/lexdrill/workbooks.rb', line 54 def self.url_for(name) entry = load.fetch("workbooks")[name] entry && "https://docs.google.com/spreadsheets/d/#{entry.fetch('id')}/edit" end |
.use(name) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/lexdrill/workbooks.rb', line 37 def self.use(name) data = load return false unless data["workbooks"].key?(name) data["current"] = name save(data) true end |