Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
hazzik committed Sep 29, 2014
0 parents commit 9714d7d
Show file tree
Hide file tree
Showing 225 changed files with 45,453 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -0,0 +1,2 @@
_site
.sass-cache
Empty file added README.md
Empty file.
11 changes: 11 additions & 0 deletions _config.yml
@@ -0,0 +1,11 @@
# Site settings
title: NHibernate Forge
email:
description: > # this means to ignore newlines until "baseurl:"
baseurl: ""
url: "http://nhibernate.github.io"
twitter_username: nhibernate
github_username: nhibernate

# Build settings
markdown: kramdown
24,544 changes: 24,544 additions & 0 deletions _importer/BlogML.xml

Large diffs are not rendered by default.

201 changes: 201 additions & 0 deletions _importer/blogml.rb
@@ -0,0 +1,201 @@
# BlogML import script originally sourced from:
# https://github.com/philippkueng/philippkueng.github.com/tree/30ef1570f06d33938b18d5eee7767d6641b9a779/source/_import
# Best post I could find about how to use it was here:
# http://philippkueng.ch/migrate-from-blogengine-dot-net-to-jekyll.html
#
# how to install
# --------------
# mkdir source/_importer
# cp blogml.rb to the source/_importer/ you created above
# cp your BlogML.xml to the same source/_importer/ directory
#
# make sure to change the "categories" output at the end of this script
# to be the final resting place of your imported posts. i chose to put mine
# all into the /blog/archives/ folder personally. by using categories like
# this, it uses the folder structure for all posts to render in that one
# directory.
#
# if you, on the other hand, want to retain your categories as categories
# in your new blog, feel free to remove the TAGs portion and copy it to the
# CATEGORIES portion in the final output below. It will render the categories
# per your BlogML.
#
# how to run
# --------------
# I prefer this method below so you can run the importer multiple times without
# effecting any new and existing posts you may have created. because the import
# BLOWS OUT YOUR _posts FOLDER!
# cd source/_importer/
# ruby -r './blogml.rb' -e 'Jekyll::BlogML.process()'
#
# that will execute the script only with that folder
#
# change Log by eduncan911:
#
# 2014-04-08
# added "alias: " to output, changed old_url to be an array with the original old_url as well as a lowercased version
# added "date: " to output
# added "tags: " to output to read from categories (since I abused that 10 years ago)
# you can change this to "categories: " easily and have the same array for them
# added "published: " to output
#

module Jekyll

require 'rexml/document'
require 'time'
require "YAML"
require 'fileutils'

module BlogML
#Reads posts from an BlogML dump.
#It creates a post file for each entry in the dump.
def self.process(source = "BlogML.xml")
FileUtils.rmtree "_posts"
FileUtils.mkdir_p "_posts"
content = ""
open(source, "r") { |f| content << f.read }

FileUtils.touch ".htaccess"
File.open(".htaccess", "w") do |htaccess|

htaccess.puts "RewriteEngine on"

# first, we need to parse the existing categories into a known hash for later lookup
cats = Hash.new
catdoc = REXML::Document.new(content)
catdoc.elements.each("blog/categories/category") do |category|
cats[category.attributes["id"]] = category.elements["title"].text
end
puts "Categories found: #{cats.values}"

doc = REXML::Document.new(content)
posts = 0
doc.elements.each("blog/posts/post") do |item|

puts
link = item.attributes["post-url"]

title = item.elements["title"].text
puts " title: #{title}"

# Use the URL after the last slash as the post's name
name = link.split("/")[-1]
puts "original name: #{name}"

# Lowercase name for uniformity
name.downcase!

# Remove extensions (.html, .aspx, etc)
name = $1 if name =~ /(.*)\.(.*)/
puts " parsed name: #{name}"

# # Remove the leading digits and dash that Serendipity adds
# name = $1 if name =~ /\d+\-(.*)/
# puts "name 3: #{name}"
# puts "name: #{name}"

## an important note. my blogml.xml had a few spaces and \r\n before
# the <![CDATA[ markers in the content. this caused the Ruby REXML parser
# to ignore all content within element. i had to remove all of those
# in order for this line to parse.
content = item.elements["content"].text

## i'd like to insert a diclaimer that I have imported these posts.
# note that you'll have to create the file source/_includes/imported_disclaimer.html
# to render. i just put a {% blockquote %} with some verbage in it.
content = "{% include imported_disclaimer.html %}\r\n" + content

## i'd like to cut off old content from showing in the blog roll. since
# it requires <!-- more --> to be inserted, we'll just do it at the
# very top. someone with more time can make it insert after the first
# paragraph or something.
content = "<!-- more -->\r\n" + content

## This section is used to cleanup any content data.
#
# Replace /image.axd?picture= with /images/
#content.gsub!(/\/image\.axd\?picture\=/, "/images/")
# Replace /file.axd?file= with /files/
#content.gsub!(/\/file\.axd\?file\=/, "/files/")
# Replace encoded /'s with real thing
#content.gsub!(/\%2f/, "/")
content.gsub!(/http:\/\/eduncan911.com/, "") # remove the domain from my links and images
content.gsub!(/\/blog\/thumbnail\//, "/blog/archives/images/")
# handle my old [PostIcon] mod
content.gsub!(/\[PostIcon((.*;)|(.*"))?\]+/i, "<img alt='#{title}' src='")
content.gsub!(/\[Posticon((.*;)|(.*"))?\]+/i, "<img alt='#{title}' src='") # /i doesn't seem to be working
content.gsub!(/\[posticon((.*;)|(.*"))?\]+/i, "<img alt='#{title}' src='") # /i doesn't seem to be working
# [PostIcon Anchor=&quot;Top&quot;]
content.gsub!(/\[\/PostIcon\]+/i, "'/>")
content.gsub!(/\[\/Posticon\]+/i, "'/>") # /i doesn't seem to be working
content.gsub!(/\[\/posticon\]+/i, "'/>") # /i doesn't seem to be working

## is this published?
published = item.attributes["approved"]
puts "published: #{published}"

timestamp = Time.parse(item.attributes["date-created"])
puts "timestamp: #{timestamp}"

# post_file_name = "#{timestamp.strftime("%Y-%m-%d")}-#{name}"
#filename = "_posts/#{timestamp.strftime("%Y-%m-%d")}-#{name}.html"
filename = "_posts/#{timestamp.strftime("%Y-%m-%d")}-#{name}.markdown"
puts "filename: #{filename}"

## Keep old URL
# old_url = name
# htaccess.puts "RewriteRule ^#{name}$ "
# for GitHub pages, we need to setup an alias
old_url = [ item.attributes["post-url"] ]
if item.attributes["post-url"] != item.attributes["post-url"].downcase
old_url.push(item.attributes["post-url"].downcase)
end
puts "old_url: #{old_url}"

# Add URL rewrite to htaccess (broken now that we use old_url as an array)
#htaccess.puts "RewriteRule ^post/#{old_url}$ /#{name}.html [R=301,NC]"

# since BlogML doesn't support tags, and I haphazardly used categories as tags,
# we are going to read categories and use them as tags.
tags = Array.new
item.elements.each("categories/category") do |category|
tags.push(cats[category.attributes["ref"]])
end
puts "tags: #{tags}"

# puts "#{link} -> #{filename}"
File.open(filename, "w") do |f|
# YAML.dump(
# {
# "layout" => "default",
# # "name" => name,
# "title" => title,
# # "time" => timestamp,
# },
f.puts <<-HEADER
---
layout: post
title: "#{title}"
date: #{timestamp.strftime("%Y-%m-%d %H:%M:%S %z")}
comments: true
published: #{published}
categories: ["blog", "archives"]
tags: #{tags}
alias: #{old_url}
---
HEADER
# f.puts
# )
# f.puts "---\n#{content}"
f.puts content
end

posts += 1
end
puts "Created #{posts} posts!"

end
end
end
end
55 changes: 55 additions & 0 deletions _includes/footer.html
@@ -0,0 +1,55 @@
<footer class="site-footer">

<div class="wrapper">

<h2 class="footer-heading">{{ site.title }}</h2>

<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>{{ site.title }}</li>
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
</ul>
</div>

<div class="footer-col footer-col-2">
<ul class="social-media-list">
{% if site.github_username %}
<li>
<a href="https://github.com/{{ site.github_username }}">
<span class="icon icon--github">
<svg viewBox="0 0 16 16">
<path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
</svg>
</span>

<span class="username">{{ site.github_username }}</span>
</a>
</li>
{% endif %}

{% if site.twitter_username %}
<li>
<a href="https://twitter.com/{{ site.twitter_username }}">
<span class="icon icon--twitter">
<svg viewBox="0 0 16 16">
<path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/>
</svg>
</span>

<span class="username">{{ site.twitter_username }}</span>
</a>
</li>
{% endif %}
</ul>
</div>

<div class="footer-col footer-col-3">
<p class="text">{{ site.description }}</p>
</div>
</div>

</div>

</footer>
11 changes: 11 additions & 0 deletions _includes/head.html
@@ -0,0 +1,11 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width initial-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="description" content="{{ site.description }}">

<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
</head>
27 changes: 27 additions & 0 deletions _includes/header.html
@@ -0,0 +1,27 @@
<header class="site-header">

<div class="wrapper">

<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>

<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</a>

<div class="trigger">
{% for page in site.pages %}
{% if page.title %}
<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a>
{% endif %}
{% endfor %}
</div>
</nav>

</div>

</header>
Empty file.
20 changes: 20 additions & 0 deletions _layouts/default.html
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>

{% include head.html %}

<body>

{% include header.html %}

<div class="page-content">
<div class="wrapper">
{{ content }}
</div>
</div>

{% include footer.html %}

</body>

</html>
14 changes: 14 additions & 0 deletions _layouts/page.html
@@ -0,0 +1,14 @@
---
layout: default
---
<div class="post">

<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
</header>

<article class="post-content">
{{ content }}
</article>

</div>
15 changes: 15 additions & 0 deletions _layouts/post.html
@@ -0,0 +1,15 @@
---
layout: default
---
<div class="post">

<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
</header>

<article class="post-content">
{{ content }}
</article>

</div>
18 changes: 18 additions & 0 deletions _posts/2008-08-30-welcome-to-the-nhibernate-blog.markdown
@@ -0,0 +1,18 @@
---
layout: post
title: "Welcome to the NHibernate blog"
date: 2008-08-30 02:33:00 +1200
comments: true
published: true
categories: ["blog", "archives"]
tags: []
alias: ["/blogs/nhibernate/archive/2008/08/29/welcome-to-the-nhibernate-blog.aspx"]
---
<!-- more -->
{% include imported_disclaimer.html %}
<p>Hello community !</p>
<p>This is the NHibernate blog, you will find here a lot of news about this amazing framework. </p>
<p>These are just a few links about useful information: </p>
<p><a href="/wikis/">NHibernate Wiki</a></p>
<p><a href="/media/">NHibernate Downloads</a></p>
<p>and you may suscribe to our NHibernate blog using this <a href="http://feeds.feedburner.com/NHibernateBlog">link</a>. Stay tunned !</p>
Expand Down

0 comments on commit 9714d7d

Please sign in to comment.