summaryrefslogtreecommitdiff
path: root/gemfeed/examples/conf/dotfiles/scripts/randomnote.rb
diff options
context:
space:
mode:
Diffstat (limited to 'gemfeed/examples/conf/dotfiles/scripts/randomnote.rb')
-rw-r--r--gemfeed/examples/conf/dotfiles/scripts/randomnote.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/gemfeed/examples/conf/dotfiles/scripts/randomnote.rb b/gemfeed/examples/conf/dotfiles/scripts/randomnote.rb
new file mode 100644
index 00000000..b0c1b490
--- /dev/null
+++ b/gemfeed/examples/conf/dotfiles/scripts/randomnote.rb
@@ -0,0 +1,30 @@
+#!/usr/bin/env ruby
+
+NOTES_DIR = "#{ENV['HOME']}/git/foo.zone-content/gemtext/notes"
+BOOK_PATH = "#{ENV['HOME']}/Buecher/Diverse/Search-Inside-Yourself.txt"
+MIN_PERCENTAGE = 80
+MIN_LENGTH = 10
+
+class String
+ CLEAN_PATTERN = [
+ /\d\d\d-\d\d-\d\d/, /[^A-Za-z0-9!.;,?'" @]/,
+ /http.?:\/\/\S+/, /\S+\.gmi/, /^\./, /^\d/,
+ ]
+ def clean
+ CLEAN_PATTERN.each {|p| gsub! p, '' }
+ gsub(/\s+/, ' ').strip
+ end
+ def letter_percentage?(threshold) = threshold <= (100 * count("A-Za-z")) / length
+end
+
+begin
+ srand Random.new_seed
+ puts File.read((Dir["#{NOTES_DIR}/*.gmi"] + [BOOK_PATH]).shuffle.sample)
+ .split("\n")
+ .map(&:clean)
+ .select{ |l| l.length >= MIN_LENGTH }
+ .reject{ |l| l.match?(/(Published at|EMail your comments)/) }
+ .reject{ |l| l.match?(/'|book notes/) }
+ .select{ |l| l.letter_percentage?(MIN_PERCENTAGE) }
+ .shuffle.sample
+end