Remove the old TeX migration scripts
This commit is contained in:
@@ -1,42 +0,0 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
require 'pg'
|
|
||||||
|
|
||||||
connection = PG.connect(user: 'caraus', dbname: 'caraus_blog')
|
|
||||||
query = <<~SQL
|
|
||||||
SELECT articles.*, categories.name
|
|
||||||
FROM articles
|
|
||||||
INNER JOIN categories on categories.id = articles.category_id
|
|
||||||
SQL
|
|
||||||
connection.exec query do |result|
|
|
||||||
result.each do |row|
|
|
||||||
post_contents = <<~POST
|
|
||||||
---
|
|
||||||
layout: post
|
|
||||||
POST
|
|
||||||
|
|
||||||
date = row['created_at'].gsub /\.[[:digit:]]+$/, ''
|
|
||||||
post_contents << "date: #{date}\n"
|
|
||||||
if row['name'] == 'Über Technik und Philosophie'
|
|
||||||
category = 'Aufsatz'
|
|
||||||
else
|
|
||||||
category = row['name']
|
|
||||||
end
|
|
||||||
post_contents << "tags: #{category}\n"
|
|
||||||
|
|
||||||
if row['title'].include? '"'
|
|
||||||
post_contents << "title: |\n #{row['title']}\n"
|
|
||||||
else
|
|
||||||
post_contents << "title: #{row['title']}\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
post_contents << "teaser:\n #{row['teaser']}\n" unless row['teaser'].nil?
|
|
||||||
post_contents << "---\n"
|
|
||||||
post_contents << "#{row['description'].delete("\r")}\n"
|
|
||||||
|
|
||||||
post_path = (Pathname.new('themes/posts') + row['slug']).sub_ext('.html')
|
|
||||||
|
|
||||||
post_path.dirname.mkpath
|
|
||||||
post_path.write post_contents
|
|
||||||
end
|
|
||||||
end
|
|
229
bin/split.rb
229
bin/split.rb
@@ -1,229 +0,0 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
require 'open3'
|
|
||||||
|
|
||||||
OUTPUT_FILE = 'var/tmp.txt'
|
|
||||||
|
|
||||||
def handle_line(line, output)
|
|
||||||
if line.length < 120 || line.start_with?("\t")
|
|
||||||
output << line
|
|
||||||
else
|
|
||||||
in_tag = false
|
|
||||||
last_whitespace = 0
|
|
||||||
|
|
||||||
for line_position in 0...line.length
|
|
||||||
current_character = line[line_position]
|
|
||||||
|
|
||||||
if line_position == line.length.pred
|
|
||||||
output << line
|
|
||||||
elsif current_character == ' ' && !in_tag
|
|
||||||
if line_position > 80 && last_whitespace > 0
|
|
||||||
output << line[0...line_position]
|
|
||||||
handle_line line[line_position.succ..], output
|
|
||||||
return
|
|
||||||
else
|
|
||||||
last_whitespace = line_position
|
|
||||||
end
|
|
||||||
else
|
|
||||||
case current_character
|
|
||||||
when '<'
|
|
||||||
in_tag = true
|
|
||||||
when '>'
|
|
||||||
in_tag = false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def split(source)
|
|
||||||
output_lines = []
|
|
||||||
|
|
||||||
source.each_line do |line|
|
|
||||||
handle_line line.chomp, output_lines
|
|
||||||
end
|
|
||||||
|
|
||||||
output_lines.join "\n"
|
|
||||||
end
|
|
||||||
|
|
||||||
def diff(source, transformed_text)
|
|
||||||
File.write(OUTPUT_FILE, transformed_text.gsub(' ', "\n") + "\n")
|
|
||||||
|
|
||||||
Open3.popen2 'diff', '-Nur', OUTPUT_FILE, '-' do |stdin, stdout, wait_thr|
|
|
||||||
stdin.puts source.gsub(' ', "\n")
|
|
||||||
stdin.close
|
|
||||||
|
|
||||||
print stdout.read
|
|
||||||
|
|
||||||
wait_thr.value
|
|
||||||
end
|
|
||||||
transformed_text
|
|
||||||
end
|
|
||||||
|
|
||||||
def head(source)
|
|
||||||
source.lines.map do |line|
|
|
||||||
next line unless line.start_with?('<h') && line.end_with?(">\n")
|
|
||||||
|
|
||||||
header_text = line[4...-6].gsub /^\d\. /, ''
|
|
||||||
header_level = line[2].to_i
|
|
||||||
|
|
||||||
case header_level
|
|
||||||
when 2
|
|
||||||
"\\section{#{header_text}}\n"
|
|
||||||
when 3
|
|
||||||
"\\subsection{#{header_text}}\n"
|
|
||||||
when 4
|
|
||||||
"\\subsubsection{#{header_text}}\n"
|
|
||||||
else
|
|
||||||
line
|
|
||||||
end
|
|
||||||
end.join
|
|
||||||
end
|
|
||||||
|
|
||||||
def references(source)
|
|
||||||
references_start = '<ol class="footnote">'
|
|
||||||
references_index = source.index(references_start)
|
|
||||||
return source if references_index.nil?
|
|
||||||
|
|
||||||
replaced = source[0...references_index]
|
|
||||||
references_text = source[references_index + references_start.length + 1...-('</ol>'.length + 1)]
|
|
||||||
|
|
||||||
references_text.each_line do |line|
|
|
||||||
reference_id, reference_text = line.strip.delete_prefix('<li id="').delete_suffix('</li>').split('">')
|
|
||||||
puts "#{reference_id}: #{reference_text}"
|
|
||||||
|
|
||||||
reference_match = source.match(/<sup><a href="##{reference_id}">(\d+)<\/a><\/sup>/)
|
|
||||||
if reference_match
|
|
||||||
answer = STDIN.gets
|
|
||||||
|
|
||||||
if answer.nil?
|
|
||||||
File.write OUTPUT_FILE, replaced
|
|
||||||
return replaced
|
|
||||||
else
|
|
||||||
reference_name, page = answer.chomp.split(' ', 2)
|
|
||||||
|
|
||||||
see = '[Vgl.]' if reference_text.start_with? 'Vgl.'
|
|
||||||
replaced.sub!(reference_match[0], "\\footcite#{see}[#{page}]{#{reference_name}}")
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts 'No match!'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
File.write OUTPUT_FILE, replaced
|
|
||||||
replaced
|
|
||||||
end
|
|
||||||
|
|
||||||
def quotes(source)
|
|
||||||
paragraphs = source.split("\n\n")
|
|
||||||
|
|
||||||
paragraphs.each do |paragraph|
|
|
||||||
last_index = 0
|
|
||||||
quote_indices = []
|
|
||||||
quote_pair = []
|
|
||||||
|
|
||||||
while true
|
|
||||||
last_index = paragraph.index('"', last_index + 1)
|
|
||||||
if last_index.nil?
|
|
||||||
break
|
|
||||||
elsif quote_pair.empty?
|
|
||||||
quote_pair << last_index
|
|
||||||
else
|
|
||||||
quote_pair << last_index
|
|
||||||
quote_indices << quote_pair
|
|
||||||
quote_pair = []
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if quote_pair.empty?
|
|
||||||
quote_indices.each do |first_quote, second_quote|
|
|
||||||
paragraph[first_quote] = '„'
|
|
||||||
paragraph[second_quote] = '“'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
paragraphs.join("\n\n")
|
|
||||||
end
|
|
||||||
|
|
||||||
def print_out(source)
|
|
||||||
print source
|
|
||||||
source
|
|
||||||
end
|
|
||||||
|
|
||||||
def break_lines(source)
|
|
||||||
source.gsub('</p> <p', "</p>\n\n<p")
|
|
||||||
.sub(/\s+<ol class="footnote">/, %{\n\n<ol class="footnote">})
|
|
||||||
.sub('</ol>', "\n</ol>")
|
|
||||||
.gsub('<li id=', "\n\t<li id=")
|
|
||||||
end
|
|
||||||
|
|
||||||
class Arguments
|
|
||||||
attr_accessor :input
|
|
||||||
|
|
||||||
def initialize
|
|
||||||
@operations = Set.new
|
|
||||||
end
|
|
||||||
|
|
||||||
def read_arguments(arguments)
|
|
||||||
arguments.each do |argument|
|
|
||||||
handle_argument argument
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def operations
|
|
||||||
@operations.to_a
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def handle_argument(argument)
|
|
||||||
if argument.start_with? '--'
|
|
||||||
add_option argument
|
|
||||||
else
|
|
||||||
@operations << argument
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def add_option(option)
|
|
||||||
name, value = option.delete_prefix('--').split '='
|
|
||||||
|
|
||||||
case name
|
|
||||||
when 'input'
|
|
||||||
@input = value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
arguments = Arguments.new
|
|
||||||
arguments.read_arguments ARGV
|
|
||||||
|
|
||||||
raise 'No input file given with --input=file' if arguments.input.nil?
|
|
||||||
|
|
||||||
operations = arguments.operations
|
|
||||||
source = transformed_text = File.read arguments.input
|
|
||||||
|
|
||||||
while operation = operations.shift do
|
|
||||||
case operation
|
|
||||||
when 'break'
|
|
||||||
# Add line breaks between paragraphs.
|
|
||||||
transformed_text = break_lines transformed_text
|
|
||||||
when 'split'
|
|
||||||
# Split long lines, so each line has 80-120 characters if possible.
|
|
||||||
transformed_text = split transformed_text
|
|
||||||
when 'diff'
|
|
||||||
transformed_text = diff source, transformed_text
|
|
||||||
when 'head'
|
|
||||||
# Replace HTML headers with LaTeX sections.
|
|
||||||
transformed_text = head transformed_text
|
|
||||||
when 'references'
|
|
||||||
transformed_text = references transformed_text
|
|
||||||
when 'quotes'
|
|
||||||
transformed_text = quotes transformed_text
|
|
||||||
when 'print'
|
|
||||||
transformed_text = print_out transformed_text
|
|
||||||
else
|
|
||||||
raise "Unknown operation #{operation}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# puts transformed_text
|
|
Reference in New Issue
Block a user