Skip to content

default-config issue  #12

@blank71

Description

@blank71

When using file-printer with Java code with default-config, the output is not correct. I expect it to behave as plain text. The head element of each lines may disappear in some situations. Using CodesSyntax.java and code-peinter both work correct.

It seems good to put identifier = CodePrinter.syntax-rule-line `.+`; for me but may be it is not best way. Would you give some better way if you have it. Or would you fix the code to solve the issue.

Sample below.

local.satyh
@require: code-printer/code-printer

%%% code-printer
let null-string = ` `
let space-string = string-unexplode [0x20]
let tab-string = string-unexplode [0x09]
let cr-string = string-unexplode [0x0D]
let lf-string = string-unexplode [0x0A]

% let code-config = CodePrinter.make-config CodeSyntax.java CodePrinter.default-theme
let code-config = 
  let syntax = CodePrinter.make-syntax (|
    line-comment = CodePrinter.syntax-rule-fun (fun _ -> None);
    block-comment = CodePrinter.syntax-rule-fun (fun _ -> None);
    string = CodePrinter.syntax-rule-fun (fun _ -> None);
    keywords = [];
    % changed this
    identifier = CodePrinter.syntax-rule-line `.+`;
    others = [];
  |)
  in
  CodePrinter.make-config syntax CodePrinter.default-theme

let-block ctx +fp filepath = 
  let join i s1 s2 =
    if i <= 0 then
      s2
    else
      s1 ^ lf-string ^ s2
  in
  let str-list = read-file filepath in
  let code-str =
    List.fold-lefti join null-string str-list
  in
  CodePrinter.make-code ctx code-config code-str
%%% end: code-printer
test.saty
@require: stdjabook
@import: ./local

document (|
  title = {test code-printer};
  author = {blank71};
  show-title = false;
  show-toc = false;
|) '<
+pn {fp}
+fp (`SATySFiBuilder.java`);
+pn {file-printer}
+file-printer (`SATySFiBuilder.java`);
+pn {code-printer}
+code-printer (```package builder;
// comment
public class SATySFiBuilder implements Builder {
	// comment
	private StringBuffer buffer = new StringBuffer();

	@Override
	public void makeTitle(String title) {
		buffer.append("+section {" + title + "} <\n");
	}

	@Override
	public void close() {
		buffer.append(">\n");
	}

	@Override
	public String getResult() {
		return buffer.toString();
	}

}

```);
>

SATySFiBuilder.java
package builder;
日本語 英語 日本語 英語
import hoge
aaa bbb ccc
// comment
public class SATySFiBuilder implements Builder {
	// comment
	private StringBuffer buffer = new StringBuffer();

	@Override
	public void makeTitle(String title) {
		buffer.append("+section {" + title + "} <\n");
	}

	@Override
	public void close() {
		buffer.append(">\n");
	}

	@Override
	public String getResult() {
		return buffer.toString();
	}

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions