Git Product home page Git Product logo

sika's Introduction

SIKA

SIKA Is a Knowledge Archiver!

SIKA (formerly called as blogman) is a cross-platform static blog/note webpage generator, written in C#.

FEATURES

  • Implemented with pure C#
  • GitHub flavoured Markdown support
  • Custom layout support with Razor/C#
  • Google xml sitemap support
  • Highly configurable

GETTING STARTED

See wiki.

PREVIEW

  • My blog generated with sika.

sika's People

Contributors

dependabot[bot] avatar sharp0802 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sika's Issues

[BUG] Web resources not provided

Web resources not provided into site folder.

To Reproduce
Steps to reproduce the behavior:

  1. Build project
  2. See error

Expected behavior
Resources folder in AppContext.BaseDirectory must be copied into site folder.

[BUG] Broken href between posts

Expected

The href of target post is inserted into link element of html.

Behaviour

Href of link element is always blank.

How to reproduce

Just make two post, and make circular reference between them via markdown link.

[BUG] Nested posts are ignored in link-process

Nested posts are not linked into site folder.

To Reproduce
Steps to reproduce the behavior:

  1. Create nested posts
  2. Build project
  3. See error

Expected behavior
Nested posts are linked into HTML file in flatten folder

[BUG] Nested-post linking error

If blogman tries to link nest post, blogman causes exception.

To Reproduce
Steps to reproduce the behavior:

  1. Create nested post
  2. Attempt to build project
  3. See error
Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: C#_Unity/NetFramework/2022-02-06-accessviolationexception.html
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](TSource[] source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
   at BlogMan.Components.Linker..ctor(Project project) in /home/sharp0802/repos/src/BlogMan/src/BlogMan/Components/Linker.cs:line 35
   at BlogMan.Components.Linker.Link(Project project) in /home/sharp0802/repos/src/BlogMan/src/BlogMan/Components/Linker.cs:line 110
   at BlogMan.Components.Initializer.Build(FileInfo project) in /home/sharp0802/repos/src/BlogMan/src/BlogMan/Components/Initializer.cs:line 87
   at System.CommandLine.Handler.<>c__DisplayClass2_0`1.<SetHandler>b__0(InvocationContext context)
   at System.CommandLine.Invocation.AnonymousCommandHandler.Invoke(InvocationContext context)
   at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext()

Expected behavior
Succeeded to build project.

Desktop (please complete the following information):

  • OS: Arch Linux
  • Version: v0.0.2-alpha

Such a boring name

BlogMan is such a boring name...
What about a new and unique name for this project?

Support more data-formats

Problem

  • Latex docs not supported
  • PDF docs not supported
  • ODT not supported

Solution

  • Use pandoc internally
  • Or some...

Use primary initializer

The code:

class A
{
    ...
    public A(int a, int b)
    {
        A = a;
        B = b;
    }
    ...
}

Can be converted into (C# 12.0):

class A(int a, int b)
{
    int A = a;
    int B = b;
    ...
}

There is many codes like these pattern in sika.
We need to convert into primary initializers.

[BUG] Broken href on windows

Problem

On windows, SIKA.Test Failed with message:

fail: align-4.html: === EXCEPTION ===
System.Collections.Generic.KeyNotFoundException: The given key 'test0/align-0.md' was not present in the dictionary.
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at SIKA.Components.LinkerBase.OnVisitLink(LinkInline link) in D:\develop\sika\src\SIKA\Components\LinkerBase.cs:line 99
   at MarkdigExtensions.UrlRewriter.UrlRewriterExtension.documentProcessed(MarkdownDocument document)
   at <StartupCode$MarkdigExtensions-UrlRewriter>[email protected](MarkdownDocument delegateArg0)
   at Markdig.Parsers.MarkdownParser.Parse(String text, MarkdownPipeline pipeline, MarkdownParserContext context)
   at Markdig.Markdown.ToHtml(String markdown, MarkdownPipeline pipeline, MarkdownParserContext context)
   at SIKA.Components.LinkerBase.<>c__DisplayClass17_1.<Run>b__3(String _) in D:\develop\sika\src\SIKA\Components\LinkerBase.cs:line 152
   at SIKA.Components.SEH.IO[T](T target, Action`1 io) in D:\develop\sika\src\SIKA\Components\SEH.cs:line 28

Expected

SIKA.Test ends with no error.

Tested Environment

  • Windows 11, version 22H2
  • .NET 8.0.100-rc1.23463.5

Update (un)installer

Although name of project changed from blogman to sika, Executable name is still kept as 'blogman'.
In addition, installer/uninstaller shell script uses legacy folders for blogman.
Thus, Installer/uninstaller doesn't work in current.
We need to update them.

[BUG] Entries in file-tree are mis-aligned.

Describe the bug

Entries in file-tree are mis-aligned.

Expected behavior

Entries in file-tree should be sorted by file name.

Screenshots

image

Additional context

Probably, Parallel compiling may causes this problem.

Huhh... **TDD**

Problem

Developer cannot detect bug or crash right after patch the code.

Suggestion

  • Add system-testing project
  • Add test case for all features
  • Add GitHub action for that

It doesn't mean TDD actually, But we need to adopt things like TDD, but much smaller than that (such as system-testing only or etc...).

Licencing issue

License header should be inserted in front of each source file to apply GPL-3.0.
However, blogman only has one LICENSE file, and doesn't have license file header for each source file.
We need to insert license header in front of each source file.

Error page should be hidden

Problem

Error page was shown in index.

Expected behavior

Error page should be hidden.

How to reproduce

  1. Include error page in sika project
  2. Build project

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.