Compare commits
2 Commits
master
...
catagories
Author | SHA1 | Date | |
---|---|---|---|
c7b708da77 | |||
59bd42f185 |
85
utils/libs/get.sh
Normal file
85
utils/libs/get.sh
Normal file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
function get_category_names () {
|
||||
local -n OUTPUT_CATEGORY_NAMES_VAR="${1:?"get_category_names : Output variable not provided"}"
|
||||
local CATEGORY_NAME
|
||||
|
||||
for category_path in $BLOG_DIR/posts/*; do
|
||||
CATEGORY_NAME="${category_path/*\//}"
|
||||
OUTPUT_CATEGORY_NAMES_VAR+=( "$CATEGORY_NAME" )
|
||||
done
|
||||
}
|
||||
|
||||
function get_category_paths () {
|
||||
local -a CATEGORY_PATHS=( $BLOG_DIR/posts/* ) CATEGORY_NAMES
|
||||
local -n OUTPUT_CATEGORY_VAR="${1:?"get_categories : No category variable provided"}"
|
||||
|
||||
for path in ${CATEGORY_PATHS[@]}; do
|
||||
OUTPUT_CATEGORY_VAR[${path/*\//}]=$path
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
function get_posts_in_category () {
|
||||
local -A CATEGORIES
|
||||
local CATEGORY_NAME="${1:?"get_posts_in_category : Category name not provided"}"
|
||||
local -n OUTPUT_POST_VAR="${2:?"get_posts_in_category : Output variable not provided"}"
|
||||
|
||||
get_category_paths CATEGORIES
|
||||
|
||||
if [[ "${!CATEGORIES[@]}" != *$CATEGORY_NAME* ]]; then
|
||||
echo "get_posts_in_category : There is no category by that name"
|
||||
exit
|
||||
fi
|
||||
|
||||
CATEGORY_PATH="${CATEGORIES[$CATEGORY_NAME]}"
|
||||
|
||||
for post in ${CATEGORY_PATH}/*.wiki; do
|
||||
FULLPATH=$post
|
||||
FILENAME="${post/*\/}"
|
||||
TIMESTAMP=`cut -d '-' -f 1 <<< "$FILENAME"`
|
||||
DATE=`date -d @$TIMESTAMP +"$DATE_FORMAT"`
|
||||
WIKI_PATH=/posts/$CATEGORY_NAME/$FILENAME
|
||||
POST_TITLE="`grep '%title' $FULLPATH | cut -d ' ' -f 2-` ($DATE)"
|
||||
DATA="$FULLPATH:$WIKI_PATH:$POST_TITLE"
|
||||
OUTPUT_POST_VAR+=( "$DATA" )
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
function get_posts_by_category () {
|
||||
local -a CATEGORY_NAMES POSTS
|
||||
local -A POST_BY_CATEGORY
|
||||
local post_string
|
||||
|
||||
local -n OUTPUT_POST_ASSOCIATIVE_ARRAY="${1:?"get_posts_by_category : Output variable not provided"}"
|
||||
|
||||
get_category_names CATEGORY_NAMES
|
||||
|
||||
for name in ${CATEGORY_NAMES[@]}; do
|
||||
get_posts_in_category $name POSTS
|
||||
for i in ${!POSTS[@]}; do
|
||||
post="${POSTS[$i]}"
|
||||
if [[ "$post_string" ]]; then
|
||||
post_string+="${POST_DELIMITER}${post}"
|
||||
else
|
||||
post_string="$post"
|
||||
fi
|
||||
done
|
||||
|
||||
OUTPUT_POST_ASSOCIATIVE_ARRAY[$name]="$post_string"
|
||||
|
||||
post_string=""
|
||||
unset POSTS
|
||||
done
|
||||
}
|
||||
|
||||
function deserialize_posts () {
|
||||
local -n OUTPUT_POST_ARRAY="${1:?"deserialize_posts : Output variable not provided"}"
|
||||
local SERIALIZED_POSTS="${2:?"deserialize_posts : Serialized posts not provided"}"
|
||||
|
||||
OIFS=$IFS
|
||||
IFS="$POST_DELIMITER"
|
||||
read -a OUTPUT_POST_ARRAY <<< "$SERIALIZED_POSTS"
|
||||
}
|
Loading…
Reference in New Issue
Block a user