Commit 5a2e85ad authored by mohamad.alturky's avatar mohamad.alturky

fixing input output

parent f8c48d4b
{
"Name": "mohamad",
"Value": 342
}
\ No newline at end of file
package main
import (
"encoding/json"
"fmt"
"log"
"os"
)
type MyStruct struct {
Name string
Value int
}
func main() {
filename := "./input.json"
// Read the JSON file
fileContent, err := os.ReadFile(filename)
if err != nil {
log.Fatal("Error reading the file:", err)
}
var data MyStruct
err = json.Unmarshal(fileContent, &data)
if err != nil {
log.Fatal("Error unmarshaling JSON:", err)
}
fmt.Printf("Name: %s, Value: %d\n", data.Name, data.Value)
}
......@@ -3,190 +3,21 @@ package main
import (
FileManagement "donut/fileManagement"
Transpilation "donut/transpilation"
"github.com/TwiN/go-color"
)
func main() {
template := `
@template
{{
text
@exec
{{
code
@template
{{
text
}}
println(color.Colorize(color.Blue, `
code
}}
text
@exec
{{ 11111111
code
@template
{{
text
}}
code
}}
|‾‾‾‾‾‾‾‾\ |‾‾‾‾‾‾‾‾‾| |‾‾‾‾‾\ |‾‾| |‾‾| |‾‾| |‾‾‾‾‾‾‾‾‾‾‾‾|
| |‾‾‾\ \ | |‾‾‾| | | |\ \ | | | | | | ‾‾‾‾| |‾‾‾‾
| | | | | | | | | | \ \| | | | | | | |
| |___/ / | |___| | | | \ | | |___| | | |
|________/ |_________| |__| \____| |_________| |__|
}}
@define {{
f()===>
}}
@import {{
"fmt"
}}
`
`))
template := FileManagement.ReadData("../templates/data.donut")
result := Transpilation.BuildTranspiler(template).GetExecutable()
FileManagement.WriteFile("./rs.go", result)
FileManagement.WriteFile("../out/result.go", result)
}
// package main
// import (
// Tokenizer "donut/tokenization"
// "github.com/TwiN/go-color"
// )
// func main() {
// template := `
// @template
// {{
// text
// @exec
// {{
// code
// @template
// {{
// text
// }}
// code
// }}
// text
// @exec
// {{ 11111111
// code
// @template
// {{
// text
// }}
// code
// }}
// }}
// `
// new := ""
// startingIdx := 0
// for {
// if startingIdx == len(template) {
// break
// }
// res := Tokenizer.ConvertNestingToConcatenation(startingIdx, template, "exec", "template")
// startingIdx = res.TerminatedAt
// new = new + res.Template
// }
// // println("------------------")
// // println(template2.Template)
// // println("------------------")
// // println(template2.TerminatedAt)
// // println("------------------")
// // println(len(template))
// println(color.Colorize(color.Blue, `
// |‾‾‾‾‾‾‾‾\ |‾‾‾‾‾‾‾‾‾| |‾‾‾‾‾\ |‾‾| |‾‾| |‾‾| |‾‾‾‾‾‾‾‾‾‾‾‾|
// | |‾‾‾\ \ | |‾‾‾| | | |\ \ | | | | | | ‾‾‾‾| |‾‾‾‾
// | | | | | | | | | | \ \| | | | | | | |
// | |___/ / | |___| | | | \ | | |___| | | |
// |________/ |_________| |__| \____| |_________| |__|
// `))
// println(new)
// // println(color.Colorize(color.Red, "This is also red"))
// }
// // package main
// // // A simple program demonstrating the paginator component from the Bubbles
// // // component library.
// // import (
// // "fmt"
// // "log"
// // "strings"
// // "github.com/charmbracelet/bubbles/paginator"
// // "github.com/charmbracelet/lipgloss"
// // tea "github.com/charmbracelet/bubbletea"
// // )
// // func newModel() model {
// // var items []string
// // for i := 1; i < 101; i++ {
// // text := fmt.Sprintf("Item %d", i)
// // items = append(items, text)
// // }
// // p := paginator.New()
// // p.Type = paginator.Dots
// // p.PerPage = 10
// // p.ActiveDot = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "235", Dark: "252"}).Render("•")
// // p.InactiveDot = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "250", Dark: "238"}).Render("•")
// // p.SetTotalPages(len(items))
// // return model{
// // paginator: p,
// // items: items,
// // }
// // }
// // type model struct {
// // items []string
// // paginator paginator.Model
// // }
// // func (m model) Init() tea.Cmd {
// // return nil
// // }
// // func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
// // var cmd tea.Cmd
// // switch msg := msg.(type) {
// // case tea.KeyMsg:
// // switch msg.String() {
// // case "q", "esc", "ctrl+c":
// // return m, tea.Quit
// // }
// // }
// // m.paginator, cmd = m.paginator.Update(msg)
// // return m, cmd
// // }
// // func (m model) View() string {
// // var b strings.Builder
// // b.WriteString("\n Paginator Example\n\n")
// // start, end := m.paginator.GetSliceBounds(len(m.items))
// // for _, item := range m.items[start:end] {
// // b.WriteString(" • " + item + "\n\n")
// // }
// // b.WriteString(" " + m.paginator.View())
// // b.WriteString("\n\n h/l ←/→ page • q: quit\n")
// // return b.String()
// // }
// // func main() {
// // p := tea.NewProgram(newModel())
// // if _, err := p.Run(); err != nil {
// // log.Fatal(err)
// // }
// // }
package main
import(
"fmt"
)
func main() {
Code := ""
Code = Code + string( `
text
`)
code
Code = Code + string( `
text
`)
code
Code = Code + string( `
text
`)
11111111
code
Code = Code + string( `
text
`)
code
Code = Code + string( `
`)
}
f()===>
......@@ -24,9 +24,11 @@ func (transpiler Transpiler) GetExecutable() string {
println(defineContent)
templateAfterAdjustingInjectables := Tokenizer.ReplaceDirectiveContent(transpiler.template, "@inject", returnInjectedString)
transpiler.template = templateAfterAdjustingInjectables
println("templateAfterAdjustingInjectables")
println(templateAfterAdjustingInjectables)
println("templateAfterAdjustingInjectables")
// println("templateAfterAdjustingInjectables")
// println(templateAfterAdjustingInjectables)
// println("templateAfterAdjustingInjectables")
transpiler.template = "@template" + "{" + "{" + transpiler.template + "}}"
resultAfterReplacingNesting := ""
startingIdx := 0
for {
......@@ -51,7 +53,7 @@ func (transpiler Transpiler) GetExecutable() string {
}
func returnInjectedString(text string) string {
return "\nCode = Code + string( " + text + " )\n"
return "@exec {" + "{\nCode = Code + string( " + text + " ) }}\n"
}
func returnInjectedtemplate(text string) string {
......
@import {{
"fmt"
}}
using Go;
@template {{
using System;
namespace Good;
@exec {{
file := "{get; set}"
}}
public class Main
public class Transpiler
{
@exec {{
for i:= 0; i < 10; i++ {
@inject {{ "Go" }}
}
}}
public int Id @inject {{ file }}
}
@define {{
func printCode(code string) {
println(code)
}
}}
@import {{
}}
@exec {{
printCode(Code)
}}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment