render.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package markup
  2. import (
  3. "opennamu/route/tool"
  4. "database/sql"
  5. "strconv"
  6. "time"
  7. )
  8. func List_markup() []string {
  9. return []string{
  10. "namumark",
  11. "namumark_beta",
  12. "macromark",
  13. "markdown",
  14. "custom",
  15. "raw",
  16. }
  17. }
  18. func Get_render(db *sql.DB, doc_name string, data string, render_type string) map[string]string {
  19. markup := ""
  20. if render_type == "api_view" || render_type == "api_from" || render_type == "api_include" || render_type == "backlink" {
  21. markup = tool.Get_document_markup(db, doc_name, "document")
  22. } else {
  23. markup = tool.Get_document_markup(db, doc_name, "")
  24. }
  25. now_time := time.Now().UnixNano()
  26. render_name := strconv.Itoa(int(now_time))
  27. render_data := Get_render_direct(db, doc_name, data, markup, render_name, render_type)
  28. return render_data
  29. }
  30. func Get_render_direct(db *sql.DB, doc_name string, data string, markup string, render_name string, render_type string) map[string]string {
  31. from := ""
  32. include := ""
  33. backlink := ""
  34. switch render_type {
  35. case "api_include":
  36. include = "1"
  37. case "api_from":
  38. from = "1"
  39. case "backlink":
  40. backlink = "1"
  41. }
  42. if render_type == "api_view" || render_type == "api_from" || render_type == "api_include" || render_type == "backlink" {
  43. render_type = "view"
  44. }
  45. doc_data_set := map[string]string{
  46. "doc_name" : doc_name,
  47. "data" : data,
  48. "render_name" : render_name,
  49. "render_type" : render_type,
  50. "from" : from,
  51. "include" : include,
  52. }
  53. render_data := make(map[string]any)
  54. switch markup {
  55. case "namumark":
  56. render_data_class := Namumark_new(db, doc_data_set)
  57. render_data = render_data_class.main()
  58. case "markdown":
  59. render_data = Markdown(db, doc_data_set)
  60. case "macromark":
  61. render_data_class := Macromark_new(db, doc_data_set, "html")
  62. render_data = render_data_class.main()
  63. default:
  64. render_data["data"] = data
  65. render_data["js_data"] = ""
  66. render_data["backlink"] = [][]string{}
  67. }
  68. if backlink == "1" {
  69. tool.Exec_DB(
  70. db,
  71. "delete from back where link = ?",
  72. doc_name,
  73. )
  74. tool.Exec_DB(
  75. db,
  76. "delete from back where title = ? and type = 'no'",
  77. doc_name,
  78. )
  79. tool.Exec_DB(
  80. db,
  81. "delete from data_set where doc_name = ? and set_name = 'link_count'",
  82. doc_name,
  83. )
  84. tool.Exec_DB(
  85. db,
  86. "delete from data_set where doc_name = ? and set_name = 'doc_type'",
  87. doc_name,
  88. )
  89. end_backlink := render_data["backlink"].([][]string)
  90. for for_a := 0; for_a < len(end_backlink); for_a++ {
  91. tool.Exec_DB(
  92. db,
  93. "insert into back (link, title, type, data) values (?, ?, ?, ?)",
  94. end_backlink[0], end_backlink[1], end_backlink[2],
  95. )
  96. }
  97. tool.Exec_DB(
  98. db,
  99. "insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'link_count', ?)",
  100. doc_name, render_data["link_count"].(int),
  101. )
  102. tool.Exec_DB(
  103. db,
  104. "insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'doc_type', ?)",
  105. doc_name, "",
  106. )
  107. }
  108. return map[string]string{
  109. "data" : "<div id=\"opennamu_render_complete\">" + render_data["data"].(string) + "</div>",
  110. "js_data" : render_data["js_data"].(string),
  111. }
  112. }