Skip to content

Commit

Permalink
Fixed header. Added bibtex/biblatex unmarshal
Browse files Browse the repository at this point in the history
  • Loading branch information
cgxeiji committed Oct 31, 2018
1 parent be6513e commit 63201bc
Showing 1 changed file with 59 additions and 12 deletions.
71 changes: 59 additions & 12 deletions app/cmd/import.go
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
// Copyright © 2018 NAME HERE <EMAIL ADDRESS>
// Copyright © 2018 Eiji Onchi <eiji@onchi.me>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// http://www.apache.org/licenses/LICENSE-2.0
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

package cmd

import (
"fmt"
"os"

"github.com/cgxeiji/bib"
"github.com/cgxeiji/scholar"
"github.com/kr/pretty"
"github.com/spf13/cobra"
)

Expand All @@ -31,7 +40,9 @@ Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("import called")
if len(args) > 0 {
importParse(args[0])
}
},
}

Expand All @@ -48,3 +59,39 @@ func init() {
// is called directly, e.g.:
// importCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

func importParse(filename string) {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()

entries, err := bib.Unmarshal(file)
if err != nil {
panic(err)
}

var es []*scholar.Entry

for _, entry := range entries {
e := scholar.NewEntry(entry["type"])
delete(entry, "type")
e.Key = entry["key"]
delete(entry, "key")

for req := range e.Required {
e.Required[req] = entry[req]
delete(entry, req)
}

for opt := range entry {
e.Optional[opt] = entry[opt]
delete(entry, opt)
}

es = append(es, e)
}

pretty.Println(es)
}

0 comments on commit 63201bc

Please sign in to comment.