From 63201bc33710afb6dd2a72777f5a97bb34aa22a6 Mon Sep 17 00:00:00 2001 From: Eiji Onchi Date: Wed, 31 Oct 2018 23:57:05 +0900 Subject: [PATCH] Fixed header. Added bibtex/biblatex unmarshal --- app/cmd/import.go | 71 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/app/cmd/import.go b/app/cmd/import.go index f94562b..10a074b 100644 --- a/app/cmd/import.go +++ b/app/cmd/import.go @@ -1,22 +1,31 @@ -// Copyright © 2018 NAME HERE +// Copyright © 2018 Eiji Onchi // -// 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" ) @@ -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]) + } }, } @@ -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) +}