Skip to content
This repository has been archived by the owner on Jan 19, 2018. It is now read-only.
/ goose Public archive

[Deprecated] Goose is a commend adds brackets for golang!

Notifications You must be signed in to change notification settings

Cirru/goose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Goose is a command which adds brackets for golang!

Golang is great! But its syntax doesn't fit me..
I have no idea about changing it. Only to change the way I code it.
Please help me if you are familiar with Golang.
Indentation-sensitive syntax is more concise. Some people like it, some hate it.
But there should always be an alternative solution for the minority.
Hope you like it.

Installation

By now it's a simple and fragile script adding brackets by counting.
Installing it with npm, some of you may need to add sudo:

npm install -g goose

Use command to watch files in the background. It will write .go in the same path.
There shouldn't be any output after running it. Note that I only tested on Linux.

goose files.gos file2.gos more-file.gos &
pkill -f goose

Usage

-o option to specify output directory.

Considered:

It'll be much more complicated to make it compatible with the whole go syntax.
Below is the parts covered in this script:

  • var const import use parentheses
  • force case default to use curly brackets
  • // comments for comments, /* cross line */ is also available
  • backquote represents cross line strings
  • golang use "\t" to indent

Examples:

This is only a demo in fake code:

package main

import "fmt"

func main()
  fmt.Println("Hello, 世界")


var
  Stdin  = newFile (0, "/dev/stdin")
  Stdout = newFile (1, "/dev/stdout")
  Stderr = newFile (2, "/dev/stderr")

import
  "./file"
  "flag"
  "fmt"
  "os"

const
  red = iota   // red == 0
  blue         // blue == 1
  green        // green == 2

 
func cat(f *file.File)
  const NBUF = 512
  var buf [NBUF]byte
  for
    switch nr, er := f.Read(buf[:]); true
    case nr < 0:
      fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n", f.String(), er.String())
      os.Exit(1)
    case nr == 0:  // EOF
      return
    case nr > 0:
      if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr
        fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n", f.String(), ew.String())

Otto.Set("def", 11)
Otto.Run(`
  console.log("The value of def is " + def)
    // The value of def is 1

`)

/* comment
comment
    comment
  comment
*/

Converts to:

package main

import "fmt"

func main() {
  fmt.Println("Hello, 世界")
}


var (
  Stdin  = newFile (0, "/dev/stdin")
  Stdout = newFile (1, "/dev/stdout")
  Stderr = newFile (2, "/dev/stderr")
)

import (
  "./file"
  "flag"
  "fmt"
  "os"
)

const (
  red = iota   // red == 0
  blue         // blue == 1
  green        // green == 2
)


func cat(f *file.File) {
  const NBUF = 512
  var buf [NBUF]byte
  for {
    switch nr, er := f.Read(buf[:]); true
    case nr < 0: {
      fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n", f.String(), er.String())
      os.Exit(1)
    }
    case nr == 0:  // EOF {
      return
    }
    case nr > 0: {
      if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr {
        fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n", f.String(), ew.String())
      }
    }
  }
}

Otto.Set("def", 11)
Otto.Run(`
  console.log("The value of def is " + def)
    // The value of def is 1

`)

/* comment
comment {
    comment
  }
  comment
}
*/

Syntax highlight

You can use the Sublime package to highlight:
https://github.com/jiyinyiyong/Goose.sublime

License

MIT

About

[Deprecated] Goose is a commend adds brackets for golang!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published