gv.3lua 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. .TH gv 3lua "06 December 2024"
  2. .SH NAME
  3. gv_lua - graph manipulation in lua
  4. .SH SYNOPSIS
  5. #!/usr/bin/lua
  6. .br
  7. require('gv')
  8. .SH USAGE
  9. .SH INTRODUCTION
  10. .B gv_lua
  11. is a dynamically loaded extension for
  12. .B lua
  13. that provides access to the graph facilities of
  14. .B graphviz.
  15. .SH COMMANDS
  16. .TP
  17. \fBNew graphs\fR
  18. .br
  19. .TP
  20. New empty graph
  21. .br
  22. \fIgraph_handle\fR \fBgv.graph\fR \fI(name);\fR
  23. .br
  24. \fIgraph_handle\fR \fBgv.digraph\fR \fI(name);\fR
  25. .br
  26. \fIgraph_handle\fR \fBgv.strictgraph\fR \fI(name);\fR
  27. .br
  28. \fIgraph_handle\fR \fBgv.strictdigraph\fR \fI(name);\fR
  29. .br
  30. .TP
  31. New graph from a dot-syntax string or file
  32. .br
  33. \fIgraph_handle\fR \fBgv.readstring\fR \fI(string);\fR
  34. .br
  35. \fIgraph_handle\fR \fBgv.read\fR \fI(string filename);\fR
  36. .br
  37. \fIgraph_handle\fR \fBgv.read\fR \fI(channel);\fR
  38. .br
  39. .TP
  40. Add new subgraph to existing graph
  41. .br
  42. \fIgraph_handle\fR \fBgv.graph\fR \fI(graph_handle, name);\fR
  43. .br
  44. .TP
  45. \fBNew nodes\fR
  46. .br
  47. .TP
  48. Add new node to existing graph
  49. .br
  50. \fInode_handle\fR \fBgv.node\fR \fI(graph_handle, name);\fR
  51. .br
  52. .TP
  53. \fBNew edges\fR
  54. .br
  55. .TP
  56. Add new edge between existing nodes
  57. .br
  58. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_node_handle);\fR
  59. .br
  60. .TP
  61. Add a new edge between an existing tail node, and a named head node which will be induced in the graph if it doesn't already exist
  62. .br
  63. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_name);\fR
  64. .br
  65. .TP
  66. Add a new edge between an existing head node, and a named tail node which will be induced in the graph if it doesn't already exist
  67. .br
  68. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_name, head_node_handle);\fR
  69. .br
  70. .TP
  71. Add a new edge between named tail and head nodes which will be induced in the graph if they don't already exist
  72. .br
  73. \fIedge_handle\fR \fBgv.edge\fR \fI(graph_handle, tail_name, head_name);\fR
  74. .br
  75. .TP
  76. \fBSetting attribute values\fR
  77. .br
  78. .TP
  79. Set value of named attribute of graph/node/edge - creating attribute if necessary
  80. .br
  81. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_name, attr_value);\fR
  82. .br
  83. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_name, attr_value);\fR
  84. .br
  85. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_name, attr_value);\fR
  86. .br
  87. .TP
  88. Set value of existing attribute of graph/node/edge (using attribute handle)
  89. .br
  90. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_handle, attr_value);\fR
  91. .br
  92. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_handle, attr_value);\fR
  93. .br
  94. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_handle, attr_value);\fR
  95. .br
  96. .TP
  97. \fBGetting attribute values\fR
  98. .br
  99. .TP
  100. Get value of named attribute of graph/node/edge
  101. .br
  102. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_name);\fR
  103. .br
  104. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_name);\fR
  105. .br
  106. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_name);\fR
  107. .br
  108. .TP
  109. Get value of attribute of graph/node/edge (using attribute handle)
  110. .br
  111. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_handle);\fR
  112. .br
  113. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_handle);\fR
  114. .br
  115. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_handle);\fR
  116. .br
  117. .TP
  118. \fBObtain names from handles\fR
  119. .br
  120. \fIstring\fR \fBgv.nameof\fR \fI(graph_handle);\fR
  121. .br
  122. \fIstring\fR \fBgv.nameof\fR \fI(node_handle);\fR
  123. .br
  124. \fIstring\fR \fBgv.nameof\fR \fI(attr_handle);\fR
  125. .br
  126. .TP
  127. \fBFind handles from names\fR
  128. .br
  129. \fIgraph_handle\fR \fBgv.findsubg\fR \fI(graph_handle, name);\fR
  130. .br
  131. \fInode_handle\fR \fBgv.findnode\fR \fI(graph_handle, name);\fR
  132. .br
  133. \fIedge_handle\fR \fBgv.findedge\fR \fI(tail_node_handle, head_node_handle);\fR
  134. .br
  135. \fIattribute_handle\fR \fBgv.findattr\fR \fI(graph_handle, name);\fR
  136. .br
  137. \fIattribute_handle\fR \fBgv.findattr\fR \fI(node_handle, name);\fR
  138. .br
  139. \fIattribute_handle\fR \fBgv.findattr\fR \fI(edge_handle, name);\fR
  140. .br
  141. .TP
  142. \fBMisc graph navigators returning handles\fR
  143. .br
  144. \fInode_handle\fR \fBgv.headof\fR \fI(edge_handle);\fR
  145. .br
  146. \fInode_handle\fR \fBgv.tailof\fR \fI(edge_handle);\fR
  147. .br
  148. \fIgraph_handle\fR \fBgv.graphof\fR \fI(graph_handle);\fR
  149. .br
  150. \fIgraph_handle\fR \fBgv.graphof\fR \fI(edge_handle);\fR
  151. .br
  152. \fIgraph_handle\fR \fBgv.graphof\fR \fI(node_handle);\fR
  153. .br
  154. \fIgraph_handle\fR \fBgv.rootof\fR \fI(graph_handle);\fR
  155. .br
  156. .TP
  157. \fBObtain handles of proto node/edge for setting default attribute values\fR
  158. .br
  159. \fInode_handle\fR \fBgv.protonode\fR \fI(graph_handle);\fR
  160. .br
  161. \fIedge_handle\fR \fBgv.protoedge\fR \fI(graph_handle);\fR
  162. .br
  163. .TP
  164. \fBIterators\fR
  165. .br
  166. .TP
  167. Iteration termination tests
  168. .br
  169. \fIbool\fR \fBgv.ok\fR \fI(graph_handle);\fR
  170. .br
  171. \fIbool\fR \fBgv.ok\fR \fI(node_handle);\fR
  172. .br
  173. \fIbool\fR \fBgv.ok\fR \fI(edge_handle);\fR
  174. .br
  175. \fIbool\fR \fBgv.ok\fR \fI(attr_handle);\fR
  176. .br
  177. .TP
  178. Iterate over subgraphs of a graph
  179. .br
  180. \fIgraph_handle\fR \fBgv.firstsubg\fR \fI(graph_handle);\fR
  181. .br
  182. \fIgraph_handle\fR \fBgv.nextsubg\fR \fI(graph_handle, subgraph_handle);\fR
  183. .br
  184. .TP
  185. Iterate over supergraphs of a graph (obscure and rarely useful)
  186. .br
  187. \fIgraph_handle\fR \fBgv.firstsupg\fR \fI(graph_handle);\fR
  188. .br
  189. \fIgraph_handle\fR \fBgv.nextsupg\fR \fI(graph_handle, subgraph_handle);\fR
  190. .br
  191. .TP
  192. Iterate over edges of a graph
  193. .br
  194. \fIedge_handle\fR \fBgv.firstedge\fR \fI(graph_handle);\fR
  195. .br
  196. \fIedge_handle\fR \fBgv.nextedge\fR \fI(graph_handle, edge_handle);\fR
  197. .br
  198. .TP
  199. Iterate over outedges of a graph
  200. .br
  201. \fIedge_handle\fR \fBgv.firstout\fR \fI(graph_handle);\fR
  202. .br
  203. \fIedge_handle\fR \fBgv.nextout\fR \fI(graph_handle, edge_handle);\fR
  204. .br
  205. .TP
  206. Iterate over edges of a node
  207. .br
  208. \fIedge_handle\fR \fBgv.firstedge\fR \fI(node_handle);\fR
  209. .br
  210. \fIedge_handle\fR \fBgv.nextedge\fR \fI(node_handle, edge_handle);\fR
  211. .br
  212. .TP
  213. Iterate over out-edges of a node
  214. .br
  215. \fIedge_handle\fR \fBgv.firstout\fR \fI(node_handle);\fR
  216. .br
  217. \fIedge_handle\fR \fBgv.nextout\fR \fI(node_handle, edge_handle);\fR
  218. .br
  219. .TP
  220. Iterate over head nodes reachable from out-edges of a node
  221. .br
  222. \fInode_handle\fR \fBgv.firsthead\fR \fI(node_handle);\fR
  223. .br
  224. \fInode_handle\fR \fBgv.nexthead\fR \fI(node_handle, head_node_handle);\fR
  225. .br
  226. .TP
  227. Iterate over in-edges of a graph
  228. .br
  229. \fIedge_handle\fR \fBgv.firstin\fR \fI(graph_handle);\fR
  230. .br
  231. \fIedge_handle\fR \fBgv.nextin\fR \fI(node_handle, edge_handle);\fR
  232. .br
  233. .TP
  234. Iterate over in-edges of a node
  235. .br
  236. \fIedge_handle\fR \fBgv.firstin\fR \fI(node_handle);\fR
  237. .br
  238. \fIedge_handle\fR \fBgv.nextin\fR \fI(graph_handle, edge_handle);\fR
  239. .br
  240. .TP
  241. Iterate over tail nodes reachable from in-edges of a node
  242. .br
  243. \fInode_handle\fR \fBgv.firsttail\fR \fI(node_handle);\fR
  244. .br
  245. \fInode_handle\fR \fBgv.nexttail\fR \fI(node_handle, tail_node_handle);\fR
  246. .br
  247. .TP
  248. Iterate over nodes of a graph
  249. .br
  250. \fInode_handle\fR \fBgv.firstnode\fR \fI(graph_handle);\fR
  251. .br
  252. \fInode_handle\fR \fBgv.nextnode\fR \fI(graph_handle, node_handle);\fR
  253. .br
  254. .TP
  255. Iterate over nodes of an edge
  256. .br
  257. \fInode_handle\fR \fBgv.firstnode\fR \fI(edge_handle);\fR
  258. .br
  259. \fInode_handle\fR \fBgv.nextnode\fR \fI(edge_handle, node_handle);\fR
  260. .br
  261. .TP
  262. Iterate over attributes of a graph
  263. .br
  264. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(graph_handle);\fR
  265. .br
  266. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(graph_handle, attr_handle);\fR
  267. .br
  268. .TP
  269. Iterate over attributes of an edge
  270. .br
  271. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(edge_handle);\fR
  272. .br
  273. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(edge_handle, attr_handle);\fR
  274. .br
  275. .TP
  276. Iterate over attributes of a node
  277. .br
  278. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(node_handle);\fR
  279. .br
  280. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(node_handle, attr_handle);\fR
  281. .br
  282. .TP
  283. \fBRemove graph objects\fR
  284. .br
  285. \fIbool\fR \fBgv.rm\fR \fI(graph_handle);\fR
  286. .br
  287. \fIbool\fR \fBgv.rm\fR \fI(node_handle);\fR
  288. .br
  289. \fIbool\fR \fBgv.rm\fR \fI(edge_handle);\fR
  290. .br
  291. .TP
  292. \fBLayout\fR
  293. .br
  294. .TP
  295. Annotate a graph with layout attributes and values using a specific layout engine
  296. .br
  297. \fIbool\fR \fBgv.layout\fR \fI(graph_handle, string engine);\fR
  298. .br
  299. .TP
  300. \fBRender\fR
  301. .br
  302. .TP
  303. Render a layout into attributes of the graph
  304. .br
  305. \fIbool\fR \fBgv.render\fR \fI(graph_handle);\fR
  306. .br
  307. .TP
  308. Render a layout to stdout
  309. .br
  310. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format);\fR
  311. .br
  312. .TP
  313. Render to an open file
  314. .br
  315. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, channel fout);\fR
  316. .br
  317. .TP
  318. Render a layout to an unopened file by name
  319. .br
  320. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, string filename);\fR
  321. .br
  322. .TP
  323. Render to a string result
  324. .br
  325. \fIstring\fR \fBgv.renderresult\fR \fI(graph_handle ing, string format);\fR
  326. .br
  327. \fBgv.renderresult\fR \fI(graph_handle, string format, string outdata);\fR
  328. .br
  329. .TP
  330. Render to an open channel
  331. .br
  332. \fIbool\fR \fBgv.renderchannel\fR \fI(graph_handle, string format, string channelname);\fR
  333. .br
  334. .TP
  335. Render a layout to a malloc'ed string, to be free'd by the caller
  336. .br
  337. .TP
  338. (deprecated - too easy to leak memory)
  339. .br
  340. .TP
  341. (still needed for "eval [gv::renderdata $G tk]" )
  342. .br
  343. \fIstring\fR \fBgv.renderdata\fR \fI(graph_handle, string format);\fR
  344. .br
  345. .TP
  346. Writing graph back to file
  347. .br
  348. \fIbool\fR \fBgv.write\fR \fI(graph_handle, string filename);\fR
  349. .br
  350. \fIbool\fR \fBgv.write\fR \fI(graph_handle, channel);\fR
  351. .br
  352. .TP
  353. Graph transformation tools
  354. .br
  355. \fIbool\fR \fBgv.tred\fR \fI(graph_handle);\fR
  356. .br
  357. .SH KEYWORDS
  358. graph, dot, neato, fdp, circo, twopi, lua.