beautiful_url 1.5.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of beautiful_url might be problematic. Click here for more details.

Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +52 -0
  3. data/beautiful_url.gemspec +60 -0
  4. data/bin/beautiful_url +9 -0
  5. data/doc/README.gen +50 -0
  6. data/lib/beautiful_url.rb +1 -0
  7. data/lib/beautiful_url/class/constants.rb +23 -0
  8. data/lib/beautiful_url/class/generate_tab_completion_for_bash_shell.rb +67 -0
  9. data/lib/beautiful_url/class/initialize.rb +149 -0
  10. data/lib/beautiful_url/class/misc.rb +475 -0
  11. data/lib/beautiful_url/class/reset.rb +50 -0
  12. data/lib/beautiful_url/class/run.rb +20 -0
  13. data/lib/beautiful_url/constants/base_constants.rb +230 -0
  14. data/lib/beautiful_url/constants/constants.rb +9 -0
  15. data/lib/beautiful_url/constants/encoding.rb +47 -0
  16. data/lib/beautiful_url/constants/misc.rb +14 -0
  17. data/lib/beautiful_url/constants/newline.rb +14 -0
  18. data/lib/beautiful_url/constants/tasks.rb +30 -0
  19. data/lib/beautiful_url/constants/time.rb +21 -0
  20. data/lib/beautiful_url/json_generator/json_generator.rb +85 -0
  21. data/lib/beautiful_url/requires/failsafe_require_of_beautiful_url.rb +9 -0
  22. data/lib/beautiful_url/requires/require_the_beautiful_url_project.rb +14 -0
  23. data/lib/beautiful_url/toplevel_methods/current_month.rb +32 -0
  24. data/lib/beautiful_url/toplevel_methods/jobs_menu.rb +106 -0
  25. data/lib/beautiful_url/toplevel_methods/local_menu.rb +2033 -0
  26. data/lib/beautiful_url/toplevel_methods/menu.rb +5293 -0
  27. data/lib/beautiful_url/toplevel_methods/misc.rb +18 -0
  28. data/lib/beautiful_url/toplevel_methods/moodle_menu.rb +135 -0
  29. data/lib/beautiful_url/toplevel_methods/return_location_of_the_menu_file.rb +27 -0
  30. data/lib/beautiful_url/toplevel_methods/roebe.rb +17 -0
  31. data/lib/beautiful_url/toplevel_methods/university_menu.rb +14135 -0
  32. data/lib/beautiful_url/version/version.rb +26 -0
  33. data/lib/beautiful_url/www/app.rb +168 -0
  34. data/test/testing_beautiful_url.rb +46 -0
  35. data/test/testing_the_base_constants.rb +26 -0
  36. metadata +101 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 44dcb3982ce315f2fddfe6043cd9cf665efe3fefe311f0f0023031b6cc18d8d0
4
+ data.tar.gz: fc0bd1b1518e88fc36e9adff77f369cc1d15a21bc30158ceb7456b0fdf132c40
5
+ SHA512:
6
+ metadata.gz: '008342e0e387b8bc57ea56dcc2b1f0a1b45612144aa19d745e9c3c831370dfaac7bd319791198332d5e429df1fc0816e245045bd9549cfd1ed6bce93e45d6df7'
7
+ data.tar.gz: 0c53f71952538b20465fc953bb68b662b06d5cbaa423def10c912158d30f7320c7621416074ddf15cd3881fd07ab8be3735b501deddc55dd9e043e462d81a9c0
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ [![forthebadge](http://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
2
+ [![forthebadge](http://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
3
+ [![Gem Version](https://badge.fury.io/rb/beautiful_url.svg)](https://badge.fury.io/rb/beautiful_url)
4
+
5
+ ## Introducing the BeautifulUrl project
6
+
7
+ This project has been created to primarily cover my needs to map a
8
+ given input (typically a symbol, such as :ruby_homepage), to
9
+ a specific String - a remote URL, in this case
10
+ **https://www.ruby-lang.org/en/**.
11
+
12
+ In fact this is the primary scenario for this project: it provides
13
+ a simple mapper between symbols, and remote URLs.
14
+
15
+ At a later time I also added symbols as shortcuts to local files,
16
+ so the whole project is a quick way for me to navigate different
17
+ resources (including **RESTful APIs**).
18
+
19
+ I may at a later point add the ability to arbitrarily add new
20
+ entries via a yaml file, so that other people can extend this
21
+ project at their own leisure - but for now, the original use
22
+ case will be kept as-is. Extending the project may happen at
23
+ a later time.
24
+
25
+ ## General usage examples:
26
+
27
+ BeautifulUrl::BeautifulUrl.new('palemoon', :replace_localhost)
28
+ BeautifulUrl::BeautifulUrl.new('palemoon' {{ replace_localhost: true }}
29
+ BeautifulUrl['palemoon'] # ← This is recommended, as it is simpler.
30
+
31
+ ## Sinatra-Interface
32
+
33
+ The BeautifulUrl project has a minimalistic **sinatra interface**.
34
+
35
+ You can start it in this way:
36
+
37
+ require 'beautiful_url/www/app.rb'
38
+
39
+ BeautifulUrl::App.start_sinatra_interface
40
+
41
+ Note that this depends on an external gem (the **web_object** project);
42
+ at the least a subclass defined in that cyberweb project, mostly as
43
+ that makes it easier for me to handle the same or similar code
44
+ across many different projects.
45
+
46
+ The main purpose of this App is to map given string input into the
47
+ corresponding URL. It's mostly added for demonstration-purposes,
48
+ to show how this could be used in a web-interface.
49
+
50
+ One day I may also want to add a small widget to a browser to
51
+ allow for this, but I don't like javascript, and don't know
52
+ how to do this via ruby only either.
@@ -0,0 +1,60 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Beautiful URL.
3
+ # =========================================================================== #
4
+ require 'beautiful_url'
5
+ require 'roebe'
6
+
7
+ Gem::Specification.new { |s|
8
+
9
+ s.name = 'beautiful_url'
10
+ s.version = BeautifulUrl.version?
11
+ s.date = Time.now.strftime('%Y-%m-%d')
12
+
13
+ DESCRIPTION = <<-EOF
14
+
15
+ This is a medium-sized gem which attempts to handle "matching" a String
16
+ or a Symbol against (remote) URLs. The project was created in order to
17
+ use short identifiers that can pinpoint to remote URLs, a bit similar
18
+ to how shorturl is working.
19
+
20
+ The gem is, however had, tailored to my use cases, so it will most
21
+ likely be utterly useless to other people by default. Most downloads
22
+ of this gem happen by scripts and bots, so do not think that the
23
+ download numbers imply anything about "real" usage - the gem is
24
+ way too much tailored to my own use case.
25
+
26
+ In the long run, though, the project may be extended to allow the
27
+ custom loading of yaml files, for a later release - but for now,
28
+ I do not think that this project will be useful to anyone else.
29
+
30
+ More documentation can be found at:
31
+
32
+ https://www.rubydoc.info/gems/beautiful_url/
33
+
34
+ EOF
35
+
36
+ # ========================================================================= #
37
+ # Show this when a user installs this gem.
38
+ # ========================================================================= #
39
+ s.post_install_message = <<-EOF
40
+
41
+ You should be able to invoke bin/beautiful_url via:
42
+
43
+ beautiful_url
44
+
45
+ EOF
46
+
47
+ s.summary = DESCRIPTION
48
+ s.description = DESCRIPTION
49
+
50
+ s.authors = ["Robert A. Heiler"]
51
+ s.email = Roebe.email?
52
+ s.files = Dir["**/*"]
53
+ s.licenses = 'MIT'
54
+ s.homepage = 'https://rubygems.org/gems/beautiful_url'
55
+
56
+ s.required_ruby_version = '>= '+RUBY_VERSION
57
+ s.required_rubygems_version = '>= '+Gem::VERSION
58
+ s.rubygems_version = '>= '+Gem::VERSION
59
+
60
+ }
data/bin/beautiful_url ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'beautiful_url'
6
+
7
+ result = BeautifulUrl.fetch_value(ARGV.first)
8
+
9
+ puts result
data/doc/README.gen ADDED
@@ -0,0 +1,50 @@
1
+ ADD_RUBY_BADGE
2
+
3
+ ## Introducing the BeautifulUrl project
4
+
5
+ This project has been created to primarily cover my needs to map a
6
+ given input (typically a symbol, such as :ruby_homepage), to
7
+ a specific String - a remote URL, in this case
8
+ **https://www.ruby-lang.org/en/**.
9
+
10
+ In fact this is the primary scenario for this project: it provides
11
+ a simple mapper between symbols, and remote URLs.
12
+
13
+ At a later time I also added symbols as shortcuts to local files,
14
+ so the whole project is a quick way for me to navigate different
15
+ resources (including **RESTful APIs**).
16
+
17
+ I may at a later point add the ability to arbitrarily add new
18
+ entries via a yaml file, so that other people can extend this
19
+ project at their own leisure - but for now, the original use
20
+ case will be kept as-is. Extending the project may happen at
21
+ a later time.
22
+
23
+ ## General usage examples:
24
+
25
+ BeautifulUrl::BeautifulUrl.new('palemoon', :replace_localhost)
26
+ BeautifulUrl::BeautifulUrl.new('palemoon' {{ replace_localhost: true }}
27
+ BeautifulUrl['palemoon'] # ← This is recommended, as it is simpler.
28
+
29
+ ## Sinatra-Interface
30
+
31
+ The BeautifulUrl project has a minimalistic **sinatra interface**.
32
+
33
+ You can start it in this way:
34
+
35
+ require 'beautiful_url/www/app.rb'
36
+
37
+ BeautifulUrl::App.start_sinatra_interface
38
+
39
+ Note that this depends on an external gem (the **web_object** project);
40
+ at the least a subclass defined in that cyberweb project, mostly as
41
+ that makes it easier for me to handle the same or similar code
42
+ across many different projects.
43
+
44
+ The main purpose of this App is to map given string input into the
45
+ corresponding URL. It's mostly added for demonstration-purposes,
46
+ to show how this could be used in a web-interface.
47
+
48
+ One day I may also want to add a small widget to a browser to
49
+ allow for this, but I don't like javascript, and don't know
50
+ how to do this via ruby only either.
@@ -0,0 +1 @@
1
+ require 'beautiful_url/requires/require_the_beautiful_url_project.rb'
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'beautiful_url/class/constants.rb'
6
+ # =========================================================================== #
7
+ require 'beautiful_url/constants/constants.rb'
8
+
9
+ module BeautifulUrl
10
+
11
+ class BeautifulUrl # === BeautifulUrl::BeautifulUrl
12
+
13
+ # ========================================================================= #
14
+ # === RUN_ALREADY
15
+ # ========================================================================= #
16
+ RUN_ALREADY = true
17
+
18
+ # ========================================================================= #
19
+ # === DEFAULT_URL
20
+ # ========================================================================= #
21
+ DEFAULT_URL = 'http://localhost/DATA/PROGRAMMING_LANGUAGES/R/R.cgi'
22
+
23
+ end; end
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'beautiful_url/class/generate_tab_completion_for_bash_shell.rb'
6
+ # =========================================================================== #
7
+ module BeautifulUrl
8
+
9
+ class BeautifulUrl # It is part of the class.
10
+
11
+ begin
12
+ require 'save_file'
13
+ rescue LoadError; end
14
+
15
+ # ========================================================================= #
16
+ # === generate_tab_completion_for_bash_shell
17
+ #
18
+ # This entry point will generate the tab-completion for the BASH shell.
19
+ #
20
+ # Invocation examples:
21
+ #
22
+ # purl GENERATE
23
+ # purl --generate
24
+ #
25
+ # ========================================================================= #
26
+ def generate_tab_completion_for_bash_shell
27
+ begin
28
+ require 'collect_first_word_of_case_menu'
29
+ rescue LoadError; end
30
+ begin
31
+ require 'opn'
32
+ rescue LoadError; end
33
+ opn; e 'Now generating tab completion for the bash shell.'
34
+ _ = ''.dup # This is the string to store.
35
+ _ << 'completion_for_purl()
36
+ {
37
+ local cur complete_these_words
38
+
39
+ COMPREPLY=() # Array variable storing the possible completions.
40
+ cur="${COMP_WORDS[COMP_CWORD]}"
41
+ complete_these_words="'
42
+ beautiful_menu = ::BeautifulUrl[:beautiful_menu]
43
+ if beautiful_menu.is_a? Array
44
+ beautiful_menu = beautiful_menu.first
45
+ end
46
+ results = CollectFirstWordOfCaseMenu.new(beautiful_menu).result
47
+ results.sort.each {|entry|
48
+ _ << entry+"\n"
49
+ }
50
+ _ << ' "
51
+
52
+ if [[ ${cur} == * ]] ; then
53
+ COMPREPLY=( $(compgen -W "${complete_these_words}" -- ${cur}) )
54
+ return 0
55
+ fi
56
+ }
57
+ # Next, available auto-completion for the commands "purl" and "url".
58
+ complete -F completion_for_purl url
59
+ complete -F completion_for_purl purl
60
+ '
61
+ store_where =
62
+ "#{BASE_DIR}DATA/PC/OS/LINUX/SHELL/SCRIPTS/completion_for_purl.sh"
63
+ opn; e 'We will store at `'+store_where+'`.'
64
+ SaveFile.write_what_into(_, store_where)
65
+ end; alias generate_tab_completion generate_tab_completion_for_bash_shell # === generate_tab_completion
66
+
67
+ end; end # bmenu
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === BeautifulUrl::BeautifulUrl
6
+ #
7
+ # The class BeautifulUrl wants to make it easier to open local pages -
8
+ # but it can also make use of shortcuts for remote files.
9
+ #
10
+ # It additionally supports the usage of intralinks, e.g. if you wish
11
+ # to append something like '#foo' to a html page, it is possible
12
+ # through this project.
13
+ #
14
+ # See below for some specific usage examples.
15
+ #
16
+ # In the event that a substitute for the given input can not be found,
17
+ # we will return the original input unmodified.
18
+ #
19
+ # Specific usage examples for class BeautifulUrl in ruby code:
20
+ #
21
+ # require 'beautiful_url'
22
+ # url = BeautifulUrl.new('science_news')
23
+ # url.input?; url.url?; url.remote?
24
+ # url.do_replace_localhost
25
+ # url.replace_data
26
+ # x = BeautifulUrl.new 'geastask'
27
+ # BeautifulUrl.new('slogans').url?
28
+ # BeautifulUrl.new('geastask').url_was_found
29
+ # BeautifulUrl.new('cmd#chroot') # => "http://localhost/DATA/PC/OS/LINUX/LINUX_COMMANDS.cgi#chroot"
30
+ #
31
+ # =========================================================================== #
32
+ # require 'beautiful_url/class/initialize.rb'
33
+ # =========================================================================== #
34
+ require 'beautiful_url/class/constants.rb'
35
+ require 'beautiful_url/class/misc.rb'
36
+ require 'beautiful_url/class/reset.rb'
37
+ require 'beautiful_url/class/run.rb'
38
+
39
+ module BeautifulUrl
40
+
41
+ class BeautifulUrl # === BeautifulUrl::BeautifulUrl
42
+
43
+ alias e puts
44
+
45
+ # ========================================================================= #
46
+ # === initialize
47
+ #
48
+ # Usage examples:
49
+ #
50
+ # x = BeautifulUrl::BeautifulUrl.new('palemoon', :replace_localhost)
51
+ # x = BeautifulUrl::BeautifulUrl.new('palemoon' {{ replace_localhost: true }}
52
+ #
53
+ # ========================================================================= #
54
+ def initialize(
55
+ commandline_arguments = ARGV,
56
+ run_already = RUN_ALREADY,
57
+ &block
58
+ )
59
+ reset # Must come first.
60
+ case commandline_arguments # case tag
61
+ # ======================================================================= #
62
+ # === :dont_run_yet
63
+ # ======================================================================= #
64
+ when :dont_run_yet,
65
+ :do_not_run_yet
66
+ commandline_arguments = DEFAULT_URL
67
+ run_already = false
68
+ end
69
+ set_commandline_arguments(
70
+ commandline_arguments
71
+ )
72
+ case run_already
73
+ # ======================================================================= #
74
+ # === :replace_localhost
75
+ # ======================================================================= #
76
+ when :replace_localhost,
77
+ :replace,
78
+ :replace_localhost_with_data,
79
+ :do_replace_localhost
80
+ @replace_localhost_with_data = true # Default, as this is more important.
81
+ run_already = RUN_ALREADY
82
+ else
83
+ if run_already.is_a? Hash # Must come after reset().
84
+ # =================================================================== #
85
+ # === :replace_localhost
86
+ # =================================================================== #
87
+ if run_already.has_key? :replace_localhost
88
+ @replace_localhost_with_data = run_already[:replace_localhost]
89
+ run_already = RUN_ALREADY # Restore the default again.
90
+ # =================================================================== #
91
+ # === :replace
92
+ # =================================================================== #
93
+ elsif run_already.has_key? :replace
94
+ @replace_localhost_with_data = run_already[:replace]
95
+ run_already = RUN_ALREADY # Restore the default again.
96
+ end
97
+ end
98
+ end
99
+ # ======================================================================= #
100
+ # === Handle blocks given to us
101
+ #
102
+ # This has to occur before run() is called.
103
+ # ======================================================================= #
104
+ if block_given?
105
+ yielded = yield
106
+ case yielded
107
+ # ===================================================================== #
108
+ # === :do_not_replace_the_localhost
109
+ # ===================================================================== #
110
+ when :do_not_replace_the_localhost
111
+ # In this case do nothing.
112
+ # ===================================================================== #
113
+ # ===:replace_localhost
114
+ # ===================================================================== #
115
+ when :replace_localhost
116
+ @replace_localhost_with_data = true
117
+ end
118
+ end
119
+ run if run_already
120
+ end
121
+
122
+ end; end
123
+
124
+ if __FILE__ == $PROGRAM_NAME
125
+ _ = BeautifulUrl::BeautifulUrl.new(ARGV)
126
+ pp _
127
+ puts _.return_corresponding_entry
128
+ _.get_rid_of_localhost
129
+ puts _.return_corresponding_entry
130
+ end # rb initialize.rb rubyreddit
131
+ # rb initialize.rb palemoon
132
+ # Testing this class next:
133
+ # purl diepasst
134
+ # purl pc
135
+ # purl anmeldung
136
+ # purl pc replace
137
+ # purl GENERATE
138
+ # purl science_news
139
+ # burl ruby#windows
140
+ # burl std#amino_acids
141
+ # burl cmd cat
142
+ # burl scinews
143
+ # burl gobodist_homepage
144
+ # sani geastask
145
+ # purl GENERATE
146
+ # burl gobodist
147
+ # burl gobodist#Compile
148
+ # burl local_php#test
149
+ # burl stdk#Periodensystem
@@ -0,0 +1,475 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'beautiful_url/class/misc.rb'
6
+ # =========================================================================== #
7
+ require 'beautiful_url/constants/misc.rb'
8
+ require 'beautiful_url/toplevel_methods/current_month.rb'
9
+ require 'beautiful_url/toplevel_methods/menu.rb'
10
+ require 'beautiful_url/toplevel_methods/moodle_menu.rb'
11
+ require 'beautiful_url/toplevel_methods/roebe.rb'
12
+ require 'beautiful_url/class/generate_tab_completion_for_bash_shell.rb'
13
+
14
+ module BeautifulUrl
15
+
16
+ class BeautifulUrl # === BeautifulUrl::BeautifulUrl
17
+
18
+ begin
19
+ require 'opn'
20
+ rescue LoadError; end
21
+
22
+ # ========================================================================= #
23
+ # === map_the_input_arguments_to_their_corresponding_values
24
+ #
25
+ # This method will map the given input to its corresponding value,
26
+ # if possible.
27
+ #
28
+ # Take note that this method will also change @is_registered if the
29
+ # entry was found.
30
+ # ========================================================================= #
31
+ def map_the_input_arguments_to_their_corresponding_values(
32
+ i = @commandline_arguments
33
+ )
34
+ i.map! {|entry|
35
+ if entry.is_a? Symbol
36
+ entry = entry.to_s.dup
37
+ end
38
+ entry = entry.dup if entry.frozen?
39
+ # ===================================================================== #
40
+ # Neither ':' or ',' seem to be useful at the end, so we will chop
41
+ # them away next (since as of October 2011). Trailing whitespace
42
+ # will also be removed in the line afterwards.
43
+ # ===================================================================== #
44
+ if entry and (entry.end_with?(':') or entry.end_with?(','))
45
+ entry.chop!
46
+ end
47
+ if entry
48
+ entry.rstrip!
49
+ # =================================================================== #
50
+ # Nor is a leading ':' useful here either.
51
+ # =================================================================== #
52
+ entry[0,1] = '' if entry.start_with? ':'
53
+ end
54
+ # ===================================================================== #
55
+ # Handle intralink entries when they contain a '#' character.
56
+ # ===================================================================== #
57
+ if entry and entry.include?('#')
58
+ splitted = entry.split('#')
59
+ set_intralink(splitted.last)
60
+ entry = splitted.first
61
+ end
62
+ old_value = entry.to_s.dup # Use a reference copy here.
63
+ new_value = ::BeautifulUrl.menu(entry)
64
+ new_value.flatten! if new_value.is_a? Array
65
+ if new_value == old_value
66
+ # =================================================================== #
67
+ # In this case we did not find anything, so we don't do anything.
68
+ # =================================================================== #
69
+ else
70
+ @is_registered = true
71
+ entry = new_value
72
+ end
73
+ if @intralink and !@intralink.empty?
74
+ entry = entry.dup if entry.frozen?
75
+ entry << @intralink # Append in this case.
76
+ end
77
+ entry
78
+ }
79
+ i.flatten!
80
+ end; alias check_input_against_menu map_the_input_arguments_to_their_corresponding_values # === check_input_against_menu
81
+ alias sanitize_input map_the_input_arguments_to_their_corresponding_values # === sanitize_input
82
+
83
+ # ========================================================================= #
84
+ # === is_a_remote_url?
85
+ #
86
+ # This method will return true if the URL is remote, false if it is
87
+ # local, and nil if it was not found at all.
88
+ #
89
+ # The variable @url_was_found will tell us whether the url was
90
+ # found or whether it was not.
91
+ # ========================================================================= #
92
+ def is_a_remote_url?
93
+ if @is_registered
94
+ _ = @commandline_arguments.all? {|entry|
95
+ entry.include? 'http'
96
+ }
97
+ else
98
+ _ = nil
99
+ end
100
+ _ # Our return value.
101
+ end; alias remote? is_a_remote_url? # === remote?
102
+ alias is_a_remote_file? is_a_remote_url? # === is_a_remote_file?
103
+
104
+ # ========================================================================= #
105
+ # === set_shall_we_replace_localhost
106
+ #
107
+ # This method simply sets @replace_localhost_with_data to the
108
+ # passed value, which is true by default.
109
+ #
110
+ # If true, we will replace the "localhost" string with the
111
+ # DATA constant.
112
+ #
113
+ # Parameters can be like this:
114
+ #
115
+ # :replace => true # Yes, replace localhost with data.
116
+ # :replace => false # No, do not replace localhost with data.
117
+ # :replace => :reverse # Replace data with localhost, which is the reverse.
118
+ #
119
+ # ========================================================================= #
120
+ def set_shall_we_replace_localhost(
121
+ i = true
122
+ )
123
+ @replace_localhost_with_data = i
124
+ end; alias set_replace_localhost set_shall_we_replace_localhost # === set_replace_localhost
125
+ alias shall_we_replace_localhost= set_shall_we_replace_localhost # === shall_we_replace_localhost=
126
+
127
+ # ========================================================================= #
128
+ # === search_for_this_url
129
+ #
130
+ # This will return a string.
131
+ # ========================================================================= #
132
+ def search_for_this_url(i)
133
+ set_commandline_arguments(i)
134
+ map_the_input_arguments_to_their_corresponding_values
135
+ handle_additional_actions_after_the_input_arguments_were_already_mapped
136
+ return string?
137
+ end
138
+
139
+ # ========================================================================= #
140
+ # === consider_replacing_data_with_localhost
141
+ # ========================================================================= #
142
+ def consider_replacing_data_with_localhost
143
+ if @replace_data_with_localhost
144
+ do_replace_data_with_localhost
145
+ end
146
+ end
147
+
148
+ # ========================================================================= #
149
+ # === consider_replacing_localhost_with_data
150
+ # ========================================================================= #
151
+ def consider_replacing_localhost_with_data
152
+ if @replace_localhost_with_data
153
+ do_replace_localhost_with_data_entry
154
+ end
155
+ end; alias replace_localhost consider_replacing_localhost_with_data # ===replace_localhost
156
+
157
+ # ========================================================================= #
158
+ # === handle_additional_actions_after_the_input_arguments_were_already_mapped
159
+ # ========================================================================= #
160
+ def handle_additional_actions_after_the_input_arguments_were_already_mapped
161
+ consider_replacing_localhost_with_data
162
+ consider_replacing_data_with_localhost
163
+ end; alias consider_replacing_everything handle_additional_actions_after_the_input_arguments_were_already_mapped # === consider_replacing_everything
164
+ alias consider_replacing_anything handle_additional_actions_after_the_input_arguments_were_already_mapped # === consider_replacing_anything
165
+
166
+ # ========================================================================= #
167
+ # === do_replace_data_entry_with_localhost
168
+ # ========================================================================= #
169
+ def do_replace_data_entry_with_localhost
170
+ @commandline_arguments.map! {|entry|
171
+ entry = entry.dup if entry.frozen?
172
+ if entry.include? @data_dir
173
+ regexp_quoted = Regexp.quote(@data_dir)
174
+ entry.sub!(regexp_quoted, HTTP_LOCALHOST_STRING)
175
+ end
176
+ entry
177
+ }
178
+ end; alias do_replace_data_with_localhost do_replace_data_entry_with_localhost # === do_replace_data_with_localhost
179
+
180
+ # ========================================================================= #
181
+ # === menu (menu tag)
182
+ # ========================================================================= #
183
+ def menu(
184
+ i = @commandline_arguments
185
+ )
186
+ if i.is_a? Array
187
+ i.each {|entry| menu(entry) }
188
+ else
189
+ case i
190
+ # ===================================================================== #
191
+ # === rf --show_help
192
+ # ===================================================================== #
193
+ when /^-?-?show(_|-)?help$/i,
194
+ /^-?-?help$/i
195
+ show_help
196
+ # ===================================================================== #
197
+ # === rf --generate-tab
198
+ # or
199
+ # === purl GENERATE
200
+ # ===================================================================== #
201
+ when 'AUTOGENERATED','GENERATE',
202
+ '--generate',
203
+ '--autogenerate',
204
+ /^-?-?generate?(-|_)?completion$/,
205
+ 'generate_shell',
206
+ /^GENE/,
207
+ '--tab',
208
+ '--generate-tab' # Could also be 'GENERATE','GENE'
209
+ generate_tab_completion_for_bash_shell # This here is in another file.
210
+ exit
211
+ end
212
+ end
213
+ end
214
+
215
+ # ========================================================================= #
216
+ # === is_registered?
217
+ # ========================================================================= #
218
+ def is_registered?
219
+ @is_registered
220
+ end; alias url_was_found? is_registered? # === url_was_found?
221
+ alias url_was_found is_registered? # === url_was_found
222
+ alias is_included? is_registered? # === is_included?
223
+
224
+ # ========================================================================= #
225
+ # === do_replace_localhost_with_data_entry
226
+ #
227
+ # This method will replace the leading localhost-string with
228
+ # the corresponding data-dir value.
229
+ #
230
+ # For example, the :
231
+ #
232
+ # http://localhost/DATA/PC/palemoon/palemoon.cgi
233
+ #
234
+ # Would become:
235
+ #
236
+ # /home/x/DATA/PC/palemoon/palemoon.cgi
237
+ #
238
+ # ========================================================================= #
239
+ def do_replace_localhost_with_data_entry
240
+ @commandline_arguments.map! {|entry|
241
+ entry = entry.dup if entry.frozen?
242
+ if entry.include? HTTP_LOCALHOST_STRING
243
+ regexp_quoted = Regexp.quote(HTTP_LOCALHOST_STRING)
244
+ entry.sub!(regexp_quoted, home_dir_of_user_x?)
245
+ end
246
+ entry
247
+ }
248
+ end; alias get_rid_of_localhost do_replace_localhost_with_data_entry # === get_rid_of_localhost
249
+ alias do_replace_localhost_with_data do_replace_localhost_with_data_entry # === do_replace_localhost_with_data
250
+ alias do_replace_localhost do_replace_localhost_with_data_entry # === do_replace_localhost
251
+
252
+ # ========================================================================= #
253
+ # === set_commandline_arguments
254
+ # ========================================================================= #
255
+ def set_commandline_arguments(i = :default)
256
+ case i
257
+ when nil
258
+ i = DEFAULT_URL
259
+ end
260
+ i = [i].flatten.compact
261
+ @commandline_arguments = i
262
+ end
263
+
264
+ # ========================================================================= #
265
+ # === replace_localhost_with_data?
266
+ # ========================================================================= #
267
+ def replace_localhost_with_data?
268
+ @replace_localhost_with_data
269
+ end; alias replace_localhost_with_data replace_localhost_with_data? # === replace_localhost_with_data
270
+
271
+ # ========================================================================= #
272
+ # === set_intralink
273
+ #
274
+ # This method sets the @intralink variable. It is the only allowed
275
+ # way to modify this variable. The @intralink variable can be a
276
+ # pointer to a local or to a remote page.
277
+ #
278
+ # As of August 2014, we will only set @intralink if we provide input.
279
+ # ========================================================================= #
280
+ def set_intralink(
281
+ i = nil, use_this_token = '#'
282
+ )
283
+ case i
284
+ when :default
285
+ i = nil
286
+ end
287
+ if i
288
+ i[0,0] = use_this_token unless i.empty?
289
+ end
290
+ @intralink = i # Must always be set, even to nil.
291
+ end
292
+
293
+ # ========================================================================= #
294
+ # === set_data_dir
295
+ #
296
+ # We need this method so that the user can define another data-dir
297
+ # that is to be used.
298
+ # ========================================================================= #
299
+ def set_data_dir(
300
+ i = :default
301
+ )
302
+ case i
303
+ # ======================================================================= #
304
+ # === :default
305
+ # ======================================================================= #
306
+ when :default,
307
+ nil
308
+ i = DATA_DIR
309
+ end
310
+ @data_dir = i
311
+ end
312
+
313
+ # ========================================================================= #
314
+ # === return_corresponding_entries
315
+ # ========================================================================= #
316
+ def return_corresponding_entries
317
+ @commandline_arguments
318
+ end; alias input? return_corresponding_entries # === input?
319
+ alias data return_corresponding_entries # === data
320
+ alias array return_corresponding_entries # === array
321
+ alias array? return_corresponding_entries # === array?
322
+
323
+ # ========================================================================= #
324
+ # === return_corresponding_entry
325
+ # ========================================================================= #
326
+ def return_corresponding_entry
327
+ @commandline_arguments.first
328
+ end; alias url? return_corresponding_entry # === url?
329
+
330
+ # ========================================================================= #
331
+ # === show_result
332
+ # ========================================================================= #
333
+ def show_result
334
+ e return_corresponding_entry
335
+ end
336
+
337
+ # ========================================================================= #
338
+ # === home_dir_of_user_x?
339
+ # ========================================================================= #
340
+ def home_dir_of_user_x?
341
+ BASE_DIR
342
+ end
343
+
344
+ # ========================================================================= #
345
+ # === do_ignore_help
346
+ # ========================================================================= #
347
+ def do_ignore_help
348
+ @ignore_help = true
349
+ end
350
+
351
+ # ========================================================================= #
352
+ # === show_help
353
+ # ========================================================================= #
354
+ def show_help(
355
+ shall_we_exit = :then_exit
356
+ )
357
+ unless @ignore_help
358
+ opn
359
+ e 'To issue the various instructions, use AUTOGENERATED or GENERATED.'
360
+ e
361
+ e 'Alternative, it works as a downcased variant as well, with -- as in:'
362
+ e
363
+ e ' --autogenerate'
364
+ e ' --generate'
365
+ e
366
+ exit if shall_we_exit == :then_exit
367
+ end
368
+ end
369
+
370
+ # ========================================================================= #
371
+ # === url_as_string
372
+ #
373
+ # Return the @input in string variant, always. This can be used as
374
+ # content that can be displayed in other programs.
375
+ #
376
+ # Take note that in the past result? returned an Array, from 02.08.2015
377
+ # up until 04.01.2020. Past that point it will return a String instead.
378
+ # ========================================================================= #
379
+ def url_as_string
380
+ return_corresponding_entry.to_s
381
+ end; alias url? url_as_string # === url?
382
+ alias location? url_as_string # === location?
383
+ alias string url_as_string # === string
384
+ alias string? url_as_string # === string?
385
+ alias result? url_as_string # === result?
386
+ alias result url_as_string # === result
387
+ alias return_as_string url_as_string # === return_as_string
388
+ alias [] url_as_string # === []
389
+
390
+ # ========================================================================= #
391
+ # === BeautifulUrl::BeautifulUrl['palemoon']
392
+ # ========================================================================= #
393
+ def self.[](
394
+ i = 'palemoon', &block
395
+ )
396
+ new(i, &block).return_as_string
397
+ end
398
+
399
+ end
400
+
401
+ # =========================================================================== #
402
+ # === BeautifulUrl.fetch_value
403
+ #
404
+ # This method simply allows you to return the URL on the commandline. It
405
+ # will also set the xorg-buffer, if available, so it is ideally used
406
+ # for commandline-applications, e. g. if the xorg-server is not available.
407
+ #
408
+ # Usage example would be:
409
+ #
410
+ # BeautifulUrl.fetch_value 'php' # => "/home/x/DATA/PROGRAMMING_LANGUAGES/php/PHP_TUTORIAL.php"
411
+ #
412
+ # =========================================================================== #
413
+ def self.fetch_value(
414
+ i
415
+ )
416
+ result = ::BeautifulUrl::BeautifulUrl.new(i).result?
417
+ if Object.const_defined? :XorgBuffer
418
+ XorgBuffer[result]
419
+ end
420
+ return result
421
+ end
422
+
423
+ # ========================================================================= #
424
+ # === BeautifulUrl.is_included?
425
+ #
426
+ # Use this method to find out whether an entry is registered or whether
427
+ # it is not.
428
+ #
429
+ # Usage example:
430
+ #
431
+ # x = BeautifulUrl.is_included? 'htop'
432
+ #
433
+ # ========================================================================= #
434
+ def self.is_included?(i)
435
+ # ======================================================================= #
436
+ # The next check was added in September 2015. It was disabled again
437
+ # in 2020.
438
+ # ======================================================================= #
439
+ # i = i.to_sym unless i.is_a? Symbol
440
+ _ = ::BeautifulUrl::BeautifulUrl.new(i)
441
+ _.is_included? # Work on the class-level there.
442
+ end; self.instance_eval { alias include? is_included? } # === BeautifulUrl.include?
443
+ self.instance_eval { alias has_this_entry? is_included? } # === BeautifulUrl.has_this_entry?
444
+ self.instance_eval { alias does_include? is_included? } # === BeautifulUrl.does_include?
445
+
446
+ # ========================================================================= #
447
+ # === BeautifulUrl.replace_localhost
448
+ # ========================================================================= #
449
+ def self.replace_localhost(i)
450
+ ::BeautifulUrl::BeautifulUrl.new(i) { :replace_localhost }
451
+ end
452
+
453
+ # =========================================================================== #
454
+ # === BeautifulUrl.map
455
+ #
456
+ # Usage examples:
457
+ #
458
+ # BeautifulUrl.map('palemoon') # => "http://localhost/DATA/PC/palemoon/palemoon.cgi"
459
+ # BeautifulUrl.parse('palemoon') # => "http://localhost/DATA/PC/palemoon/palemoon.cgi"
460
+ # BeautifulUrl.parse(:remote_bioroebe) # => "https://rubygems.org/gems/bioroebe"
461
+ #
462
+ # =========================================================================== #
463
+ def self.map(
464
+ i, &block
465
+ )
466
+ ::BeautifulUrl::BeautifulUrl.new(i, &block).return_as_string
467
+ end; self.instance_eval { alias [] map } # === BeautifulUrl[]
468
+ self.instance_eval { alias convert map } # === BeautifulUrl.convert
469
+ self.instance_eval { alias new map } # === BeautifulUrl.new
470
+ self.instance_eval { alias return_url_from map } # === BeautifulUrl.return_url_from
471
+ self.instance_eval { alias return_as_string map } # === BeautifulUrl.return_as_string
472
+ self.instance_eval { alias parse map } # === BeautifulUrl.parse
473
+ self.instance_eval { alias symbol_to_url map } # === BeautifulUrl.symbol_to_url
474
+
475
+ end