Class: UI
- Inherits:
-
Object
- Object
- UI
- Defined in:
- lib/ruby_doc/cli/ui.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#counter ⇒ Object
readonly
Properties===================.
Class Method Summary collapse
- .browse_control(identifier, page) ⇒ Object
- .browse_error(input, identifier, page) ⇒ Object
- .browse_list(page, identifier) ⇒ Object
- .browse_list_error(page) ⇒ Object
- .browse_menu(page) ⇒ Object
-
.cyanH(str) ⇒ Object
red highlight.
- .display_class(doc) ⇒ Object
- .display_class_control(doc) ⇒ Object
- .display_class_error(doc) ⇒ Object
- .display_class_menu(doc) ⇒ Object
- .display_method(doc) ⇒ Object
- .display_method_control ⇒ Object
- .display_method_error ⇒ Object
- .display_method_menu ⇒ Object
- .last_page_menu(page) ⇒ Object
- .learn_more ⇒ Object
- .list_control(matches) ⇒ Object
- .list_error(matches) ⇒ Object
- .list_menu(matches) ⇒ Object
-
.loading_animation ⇒ Object
Goes inside iterator - last line.
-
.loading_message ⇒ Object
Goes above iterator.
-
.main_control ⇒ Object
Control=====================.
-
.main_error ⇒ Object
Error======================.
-
.main_menu ⇒ Object
Menus======================.
- .method_list(doc) ⇒ Object
-
.my_gets ⇒ Object
Input======================.
- .nil_error ⇒ Object
- .paginate(identifier) ⇒ Object
-
.prompt ⇒ Object
Colors/Candy Props===============.
-
.randQ ⇒ Object
Quote Scraper==================.
- .redH(str) ⇒ Object
- .search_error ⇒ Object
-
.search_list(matches) ⇒ Object
Display=====================.
- .sepL ⇒ Object
- .sepR ⇒ Object
-
.signature ⇒ Object
Signature====================.
-
.wrapped(s, width = 78) ⇒ Object
cyan highlight.
Instance Attribute Details
#counter ⇒ Object (readonly)
Properties===================
3 4 5 |
# File 'lib/ruby_doc/cli/ui.rb', line 3 def counter @counter end |
Class Method Details
.browse_control(identifier, page) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/ruby_doc/cli/ui.rb', line 75 def self.browse_control(identifier, page) prompt input = my_gets case input when "n" paginate(identifier) when "m" RubyDoc::CLI.start when "exit!" exit! end if !input.to_i.between?(1,page.count) browse_error(input, identifier, page) else Processor.load_doc(page[input.to_i-1]) end end |
.browse_error(input, identifier, page) ⇒ Object
300 301 302 303 304 305 306 307 308 |
# File 'lib/ruby_doc/cli/ui.rb', line 300 def self.browse_error(input, identifier, page) if identifier == "Last" list_error(page) browse_control(identifier, page) else browse_list_error(page) browse_control(identifier, page) end end |
.browse_list(page, identifier) ⇒ Object
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/ruby_doc/cli/ui.rb', line 178 def self.browse_list(page, identifier) puts sepL page.each_with_index do |doc, index| if doc.type == "Class" || doc.type == "Module" li = ["#{index + 1}.".yellow, doc.name.light_cyan] else li = ["#{index + 1}.".yellow, doc.name.cyan] end puts li.join(" ") end if identifier == "Last" puts sepR puts "End of List".red end puts sepR (page) if identifier == "Last" (page) if !(identifier == "Last") browse_control(identifier, page) end |
.browse_list_error(page) ⇒ Object
310 311 312 |
# File 'lib/ruby_doc/cli/ui.rb', line 310 def self.browse_list_error(page) print redH("\n Enter # to view, 'n' for next page 'm' for main or 'exit!' to leave ") end |
.browse_menu(page) ⇒ Object
247 248 249 250 251 252 253 |
# File 'lib/ruby_doc/cli/ui.rb', line 247 def self.(page) puts "To ".cyan + "View ".yellow + "(Enter ".cyan + "#".yellow + ")".cyan + " eg. #{page.count.to_s} for #{page[page.count-1].name}".black puts "To ".cyan + "Browse Next Page ".yellow + "(Enter ".cyan + "'n'".yellow + ")".cyan puts "To Return To".cyan + " Main Menu".yellow + " (Enter ".cyan + "'m'".yellow + ")".cyan puts "To".cyan + " Leave".yellow + " (".cyan + "'exit!'".yellow + ")\n".cyan print randQ end |
.cyanH(str) ⇒ Object
red highlight
358 359 360 |
# File 'lib/ruby_doc/cli/ui.rb', line 358 def self.cyanH(str) str.colorize(color: :white, background: :cyan) end |
.display_class(doc) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/ruby_doc/cli/ui.rb', line 115 def self.display_class(doc) UI.sepL puts "TITLE: ".cyan + doc.name.upcase puts "TYPE: ".cyan + doc.type.upcase puts "\nDESCRIPTION:".cyan puts doc.description puts "Methods: ".cyan + "#{doc.methods.count}".yellow puts "Source: #{doc.url}".red puts sepR (doc) display_class_control(doc) end |
.display_class_control(doc) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ruby_doc/cli/ui.rb', line 45 def self.display_class_control(doc) prompt input = my_gets case input when "1" method_list(doc) when "m" RubyDoc::CLI.start when "exit!" exit! else display_class_error(doc) end end |
.display_class_error(doc) ⇒ Object
290 291 292 293 |
# File 'lib/ruby_doc/cli/ui.rb', line 290 def self.display_class_error(doc) print redH("\n Please enter '1' to view methods, 'm' for main, or 'exit!' to leave ") display_class_control(doc) end |
.display_class_menu(doc) ⇒ Object
234 235 236 237 238 239 |
# File 'lib/ruby_doc/cli/ui.rb', line 234 def self.(doc) puts "To ".cyan + "View Methods ".yellow + "For".cyan + " #{doc.name}".yellow + " (Enter ".cyan + "'1'".yellow + ")".cyan puts "To Return To".cyan + " Main Menu".yellow + " (Enter ".cyan + "'m'".yellow + ")".cyan puts "To".cyan + " Leave".yellow + " (".cyan + "'exit!'".yellow + ")\n".cyan print randQ end |
.display_method(doc) ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/ruby_doc/cli/ui.rb', line 145 def self.display_method(doc) UI.sepL puts "Title: ".cyan + doc.name.upcase puts "Type: ".cyan + doc.type.upcase puts "\nDescription:".cyan puts doc.doc puts "Source: #{doc.url}".red puts sepR #-----------future fix------------# # description = doc.doc # puts uie.wrapped(description, 55) #-----------future fix------------# display_method_control end |
.display_method_control ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ruby_doc/cli/ui.rb', line 61 def self.display_method_control prompt input = my_gets case input when "m" RubyDoc::CLI.start when "exit!" exit! else display_method_error end end |
.display_method_error ⇒ Object
295 296 297 298 |
# File 'lib/ruby_doc/cli/ui.rb', line 295 def self.display_method_error print redH("\n Please enter 'm' for main menu or 'exit!' to leave ") display_method_control end |
.display_method_menu ⇒ Object
241 242 243 244 245 |
# File 'lib/ruby_doc/cli/ui.rb', line 241 def self. puts "To Return To".cyan + " Main Menu".yellow + " (Enter ".cyan + "'m'".yellow + ")".cyan puts "To".cyan + " Leave".yellow + " (".cyan + "'exit!'".yellow + ")\n".cyan print randQ end |
.last_page_menu(page) ⇒ Object
255 256 257 258 259 260 |
# File 'lib/ruby_doc/cli/ui.rb', line 255 def self.(page) puts "To ".cyan + "View ".yellow + "(Enter ".cyan + "#".yellow + ")".cyan + " eg. #{page.count.to_s} for #{page[page.count-1].name}".black puts "To Return To".cyan + " Main Menu".yellow + " (Enter ".cyan + "'m'".yellow + ")".cyan puts "To".cyan + " Leave".yellow + " (".cyan + "'exit!'".yellow + ")\n".cyan print randQ end |
.learn_more ⇒ Object
203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/ruby_doc/cli/ui.rb', line 203 def self.learn_more puts "\nCOMING SOON".cyan puts "=".black*56 puts Scraper.coming_soon puts "\nCHANGELOG".cyan puts "=".black*56 puts Scraper.changelog main_control end |
.list_control(matches) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ruby_doc/cli/ui.rb', line 29 def self.list_control(matches) prompt input = my_gets if input == "m" RubyDoc::CLI.start elsif input == "exit!" exit! elsif !input.to_i.between?(1,matches.count) list_error(matches) else Processor.load_doc(matches[input.to_i-1]) end list_control(matches) end |
.list_error(matches) ⇒ Object
282 283 284 |
# File 'lib/ruby_doc/cli/ui.rb', line 282 def self.list_error(matches) print redH("\n Enter selection number, 'm' for main or 'exit!' to leave ") end |
.list_menu(matches) ⇒ Object
227 228 229 230 231 232 |
# File 'lib/ruby_doc/cli/ui.rb', line 227 def self.(matches) puts "To ".cyan + "View ".yellow + "(Enter ".cyan + "#".yellow + ")".cyan + " eg. #{matches.count.to_s} for #{matches[matches.count-2].name}".black puts "To return to".cyan + " Main Menu".yellow + " (Enter ".cyan + "'m'".yellow + ")".cyan puts "To".cyan + " Leave".yellow + " (".cyan + "'exit!'".yellow + ")\n".cyan print randQ end |
.loading_animation ⇒ Object
Goes inside iterator - last line
330 331 332 333 334 335 336 337 338 339 340 |
# File 'lib/ruby_doc/cli/ui.rb', line 330 def self.loading_animation loading = "" print loading << ". ".cyan if @counter == 50 || @counter == 100 || @counter == 150 || @counter == 200 || @counter == 250 || @counter == 300 || @counter == 350 || @counter == 400 || @counter == 450 || @counter == 500 || @counter == 550 || @counter == 600 || @counter == 650 || @counter == 700 || @counter == 750 || @counter == 800 || @counter == 850 || @counter == 900 || @counter == 950 || @counter == 1000 || @counter == 1150 || @counter == 1200 || @counter == 1250 || @counter == 1300 || @counter == 1350 || @counter == 1400 || @counter == 1450 || @counter == 1500 end |
.loading_message ⇒ Object
Goes above iterator
326 327 328 |
# File 'lib/ruby_doc/cli/ui.rb', line 326 def self. puts cyanH(" Loading Database ") + " ☠️" end |
.main_control ⇒ Object
Control=====================
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ruby_doc/cli/ui.rb', line 9 def self.main_control prompt input = my_gets if input.split.size > 1 main_error elsif input == "b" paginate("start") elsif input == "exit!" exit! elsif input == "?" learn_more else matches = Processor.search(input) search_error if matches.empty? search_list(matches) if matches end end |
.main_error ⇒ Object
Error======================
262 263 264 265 266 |
# File 'lib/ruby_doc/cli/ui.rb', line 262 def self.main_error sleep(0.1) print redH("\n Input Must Be 1 Word, 'b' to browse, or 'exit!' to leave ") main_control end |
.main_menu ⇒ Object
Menus======================
216 217 218 219 220 221 222 223 224 225 |
# File 'lib/ruby_doc/cli/ui.rb', line 216 def self. puts sepR# puts "Enter a ".cyan + "word ".yellow + "associated with the Ruby Language & I will ".cyan puts "try to find a match in my database for you.".cyan sepL# puts "\You can also enter".cyan + " 'b'".yellow + " to browse instead.".cyan + " Happy Hunting!".cyan puts "=".black*56 puts "Enter '?' to Learn More about Alpha Ruby-Doc".black print cyanH("\n If You're Searching... Single Word Inputs Only Please ") end |
.method_list(doc) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/ruby_doc/cli/ui.rb', line 129 def self.method_list(doc) puts sepR doc.methods.each_with_index do |method, index| if !method.nil? li = ["#{index + 1}.".yellow, method.name.cyan] puts li.join(" ") end end puts sepR (doc.methods) list_control(doc.methods) end |
.my_gets ⇒ Object
Input======================
5 6 7 |
# File 'lib/ruby_doc/cli/ui.rb', line 5 def self.my_gets gets.strip.to_s.downcase end |
.nil_error ⇒ Object
286 287 288 |
# File 'lib/ruby_doc/cli/ui.rb', line 286 def self.nil_error print redH("\n Enter selection number, 'm' for main or 'exit!' to leave ") end |
.paginate(identifier) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/ruby_doc/cli/ui.rb', line 163 def self.paginate(identifier) case identifier when "start" Processor.page1 when "Page1" Processor.page2 when "Page2" Processor.page3 when "Page3" Processor.last end end |
.prompt ⇒ Object
Colors/Candy Props===============
342 343 344 |
# File 'lib/ruby_doc/cli/ui.rb', line 342 def self.prompt print " >> ".cyan end |
.randQ ⇒ Object
Quote Scraper==================
316 317 318 319 320 321 322 323 |
# File 'lib/ruby_doc/cli/ui.rb', line 316 def self.randQ html = Nokogiri::HTML(open("https://fortrabbit.github.io/quotes/")) container = html.search(".row.gutter-l.wrap") quotes = container.search("p").map {|quote| quote.text.gsub(/[\n]\s+/, "")} quote = " "+ quotes[rand(0..180)]+ " " wrapped(quote, 55).black end |
.redH(str) ⇒ Object
354 355 356 |
# File 'lib/ruby_doc/cli/ui.rb', line 354 def self.redH(str) str.colorize(color: :white, background: :red) end |
.search_error ⇒ Object
268 269 270 271 272 273 274 275 276 277 278 279 280 |
# File 'lib/ruby_doc/cli/ui.rb', line 268 def self.search_error puts "\nNO CIGAR!".red puts "I couldn't find what you're looking for.".black puts "How about trying a Ruby ".black + "Method" + ", ".black + "Class" + " or ".black + "Module" + " name.".black puts "=".black*56 puts "\nNOT SURE?".red puts "You can always browse with ".black + "'b'" + " & learn something new.".black + ":)" puts "=".black*56 print redH("\n Try a new word, enter 'b' to browse, or 'exit!' to leave ") main_control end |
.search_list(matches) ⇒ Object
Display=====================
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/ruby_doc/cli/ui.rb', line 95 def self.search_list(matches) UI.sepL matches.each_with_index do |doc, index| if doc.type == "Class" || doc.type == "Module" li = ["#{index + 1}.".yellow, doc.name.light_cyan] else li = ["#{index + 1}.".yellow, doc.name.cyan] end puts li.join(" ") end puts sepR puts "Classes and Modules are".cyan + " Highlighted".light_cyan puts sepR (matches) list_control(matches) end |
.sepL ⇒ Object
346 347 348 |
# File 'lib/ruby_doc/cli/ui.rb', line 346 def self.sepL puts "=".cyan*28 + "=".white*28 end |
.sepR ⇒ Object
350 351 352 |
# File 'lib/ruby_doc/cli/ui.rb', line 350 def self.sepR "=".white*28 + "=".cyan*28 end |
.signature ⇒ Object
Signature====================
380 381 382 383 384 385 |
# File 'lib/ruby_doc/cli/ui.rb', line 380 def self.signature puts "\n"+"=".white*28 + "=".cyan*28 puts %q( ALPHA™ ╦═╗╦ ╦╔╗ ╦ ╦ ╔╦╗╔═╗╔═╗╔═╗ ╠╦╝║ ║╠╩╗╚╦╝ ║║║ ║║ ╚═╗ ╩╚═╚═╝╚═╝ ╩ ═╩╝╚═╝╚═╝╚═╝).cyan end |
.wrapped(s, width = 78) ⇒ Object
cyan highlight
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 |
# File 'lib/ruby_doc/cli/ui.rb', line 362 def self.wrapped(s, width=78) lines = [] line = "" s.split(/\s+/).each do |word| if line.size + word.size >= width lines << line line = word elsif line.empty? line = word else line << " " << word end end lines << line if line return lines.join "\n" end |